Ответ 1
Если variable_1
оценивается как False
, x устанавливается в 0
, в противном случае - variable_1
Подумайте об этом как
if variable_1:
x = variable_1
else:
x = 0
В чем смысл следующего выражения в python:
x = variable_1 or 0
variable_1
- это объект. Какое значение имеет значение x
выше? И каков тип x
?
Если variable_1
оценивается как False
, x устанавливается в 0
, в противном случае - variable_1
Подумайте об этом как
if variable_1:
x = variable_1
else:
x = 0
x
будет 0
, если variable_1
оценивается как false, иначе оно будет variable_1
>>> 'abc' or 0
'abc'
>>> '' or 0
0
>>> ['a', 'b', 'c'] or 0
['a', 'b', 'c']
>>> [] or 0
0
x
будет инициализирован до variable_1
, если его значение не равно None
или False
простой пример:
>>> a = None
>>> b = 2
>>> a or 0
0
>>> b or 0
2
x = variable_1 or 0
Это означает, что если variable_1
оценивается как False
(т.е. считается "пустым" - см. документацию по магическому методу __nonzero__
), то 0
присваивается x
.
>>> variable_1 = 'foo'
>>> variable_1 or 0
'foo'
>>> variable_1 = ''
>>> variable_1 or 0
0
Это эквивалентно "если переменная_1 установлена на что-то непустое, то используйте ее значение, иначе используйте 0".
Тип x
- это либо тип variable_1
, либо int
(поскольку 0 - int
).