Подтвердить что ты не робот

Назначение с помощью "или" в python

Является ли этот стиль неправильным для назначения значений таким переменным?

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

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

4b9b3361

Ответ 1

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

Ответ 2

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

Ответ 3

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

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

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

A = Y if X else Z