Я просмотрел это в обзоре кода:
def some_method(self, path):
path = os.path.abspath(os.path.expanduser(path or ""))
Моя первая реакция была "ahhhh bad!" но на второй мысли... это?
Это общий шаблон для реализации какого-либо значения по умолчанию или возвращаемого значения, если первая часть выражения оценивается как False. Рассматривайте это как лучшую практику - нравится это или нет. Он также может использоваться для превращения None в пустую строку.
В этом примере это немного бессмысленно, потому что вызывается так:
instance.some_method()
Выдает ошибку.
Вам придется называть его следующим образом:
instance.some_method(None)
Было бы лучше:
def some_method(self, path=None):
path = os.path.abspath(os.path.expanduser(path or ""))
Или возможно:
def some_method(self, path=""):
path = os.path.abspath(os.path.expanduser(path))
... который не будет защищать от значения None. Можно обсуждать, лучше ли в этом случае скулить или "по умолчанию".
В любом случае путь можно вообще не указывать:
instance.some_method()
if x is None: x = defaultValue
чаще. Использование того, что логические операторы возвращают один из своих операндов, чаще используется для реализации условного оператора (?:
, Но это, возможно, устарело с нескольких версий.