Назначение с "или" в Python - PullRequest
       3

Назначение с "или" в Python

26 голосов
/ 05 января 2012

Считается ли плохим стилем присваивать значения таким переменным?

x = "foobar" or None
y = some_variable or None

В приведенном выше примере x получает значение 'foobar'.

Ответы [ 3 ]

21 голосов
/ 05 января 2012

Нет, это обычная практика.Это считается плохим стилем для выражений, которые значительно длиннее ваших.

15 голосов
/ 06 января 2012

Основная опасность сделать что-то подобное - это вероятность того, что (во втором случае) some_variable будет False, но не None (например, целое число 0), и вы не захотите получить y равно None в этом случае.

4 голосов
/ 05 января 2012

Я также чувствую себя немного неловко, используя такие выражения.В Learning Python 4ed это называется «несколько необычным поведением».Позже Марк Латс говорит:

... оказывается, это довольно распространенная парадигма кодирования в Python: чтобы выбрать непустой объект из набора фиксированного размера, просто объедините их ввыражение.В более простой форме это также обычно используется для обозначения значения по умолчанию ...

Фактически, они производят краткие однострочные выражения, которые помогают исключить шум строки из кода.является основой для формы тернарного оператора if / else:

A = Y if X else Z
...