Подтвердить что ты не робот

Присоединить строку и None/string с помощью необязательного разделителя

Я в основном ищу эквивалент Python для этой операции строки VB/VBA:

FullName = LastName & ", " + FirstName

В VB/VBA + и & - оба оператора конкатенации, но они отличаются тем, как они обрабатывают значение Null:

"Some string" + Null ==> Null
"Some string" & Null ==> "Some string"

Эта скрытая функция позволяет первой строке кода, которую я написал, включать запятую и пробел между требуемым LastName и дополнительными значениями FirstName. Если FirstName - Null (Null - эквивалент VB/VBA Python None), FullName будет установлен в LastName без конечной запятой.

Есть ли однострочный идиоматический способ сделать это в Python?

Техническая нота:
Ответы gnibbler и eumiro не являются строго эквивалентом VB/VBA + и &. Используя их подходы, если FirstName является пустой строкой (""), а не None, не будет запятой. Почти во всех случаях это было бы предпочтительнее результата VB/VBA, который должен был бы добавить конечную запятую с пустым FirstName.

4b9b3361

Ответ 1

FullName = LastName + (", " + FirstName if FirstName else "")

Ответ 2

Следующая строка может использоваться для конкатенации более не-None элементов:

FullName = ', '.join(filter(None, (LastName, FirstName)))

Ответ 3

Простой тернарный оператор:

>>> s1, s
('abc', None)
>>> print(s if s is None else s1 + s)
None
>>> print(s1 if s is None else s1 + s)
abc