Если вы действительно хотите, чтобы ваша функция вела себя как встроенная функция str ()
, но возвращала пустую строку, когда аргумент None, сделайте следующее:
def xstr(s):
if s is None:
return ''
return str(s)
Используйте струну фа при использовании python v3.7
xstr = F"{s}"
Использовать оценку короткого замыкания:
s = a or '' + b or ''
Поскольку + не очень хорошая операция со строками, лучше использовать строки формата:
s = "%s%s" % (a or '', b or '')
def xstr(s):
return s if s else ''
s = "%s%s" % (xstr(a), xstr(b))
Если вы знаете, что значение всегда будет либо строкой, либо None:
xstr = lambda s: s or ""
print xstr("a") + xstr("b") # -> 'ab'
print xstr("a") + xstr(None) # -> 'a'
print xstr(None) + xstr("b") # -> 'b'
print xstr(None) + xstr(None) # -> ''
Функциональный способ (однострочный)
xstr = lambda s: '' if s is None else s
return s или ""
отлично подойдут для указанной вами проблемы!
Вариант вышеуказанного, если вам необходимо быть совместимым с Python 2.4
xstr = lambda s: s is not None and s or ''