Ответ 1
FullName = LastName + (", " + FirstName if FirstName else "")
Я в основном ищу эквивалент 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.
FullName = LastName + (", " + FirstName if FirstName else "")
Следующая строка может использоваться для конкатенации более не-None элементов:
FullName = ', '.join(filter(None, (LastName, FirstName)))
Простой тернарный оператор:
>>> s1, s
('abc', None)
>>> print(s if s is None else s1 + s)
None
>>> print(s1 if s is None else s1 + s)
abc