Есть ли сокращение для возврата значения по умолчанию, если None в Python?

В С# я могу сказать x ?? "", который даст мне x, если x не является нулевым, а пустая строка, если x - null. Я нашел это полезным для работы с базами данных.

Есть ли способ вернуть значение по умолчанию, если Python находит None в переменной?

Ответ 1

Вы можете использовать оператор or:

return x or "default"

Обратите внимание, что это возвращает "default" также, если x - любое другое значение фальши, включая пустой список, 0, пустую строку или даже datetime.time(0) (полночь).

Ответ 2

return "default" if x is None else x

попробуйте приведенное выше.

Ответ 3

Вы можете использовать условное выражение :

x if x is not None else some_value

Пример:

In [22]: x = None

In [23]: print x if x is not None else "foo"
foo

In [24]: x = "bar"

In [25]: print x if x is not None else "foo"
bar

Ответ 4

x or "default"

работает лучше всего - я могу даже использовать вызов функции inline, не выполняя его дважды или используя дополнительную переменную:

self.lineEdit_path.setText( self.getDir(basepath) or basepath )

Я использую его при открытии Qt dialog.getExistingDirectory() и отмена, которая возвращает пустую строку.

Ответ 5

У вас есть тройной синтаксис x if x else '' - это то, что вы после?