Я застрял насчет True
/False
из x
и not x
,
для x = 0
, где x
равно int
, в Python.
Почему if not x
разрешает выполнение следующего оператора и почему не позволяет if x
?
Пожалуйста, дайте объяснение.
Я застрял насчет True
/False
из x
и not x
,
для x = 0
, где x
равно int
, в Python.
Почему if not x
разрешает выполнение следующего оператора и почему не позволяет if x
?
Пожалуйста, дайте объяснение.
из документации по питону:
По умолчанию объект считается истинным, если его класс не определяет либо метод bool(), возвращающий False, либо метод len(), возвращающий ноль при вызове с объектом. . 1 Вот большинство встроенных объектов, которые считаются ложными:
константы, определенные как ложные: None
и False
.
ноль любого числового типа: 0
, 0.0
, 0j
, Decimal(0)
, Fraction(0, 1)
пустые последовательности и коллекции: ''
, ()
, []
, {}
, set()
, range(0)
https://docs.python.org/3/library/stdtypes.html
то есть ноль является целым числом,
>>> type(0)
<class 'int'>
но имеет логическое значение False, как '', (), []... и т. д.
Поскольку в python 0
считается ложным, поэтому, когда вы пишете (if x)
, он будет выполняться только тогда, когда x !=0
(поэтому он будет оцениваться как истинный).
Операторы if не выполняют свое содержимое, если их условие оценивается как ложное значение, например 0, пустая строка, False
или пустой список/кортеж.
собираюсь предположить, что вы имеете в виду
x = True
y = 0
if x:
print('x is true')
if not y:
print('your not sure why this prints')
Это связано с тем, что в Python 0
оценивается как False.
0
– это подкласс bool, False
, а любое число, отличное от нуля, оценивается как True
.
x = 0
if not x
это как сказать
x = 0
if x is False:
чему соответствует условие.
if x:
означает if is True
, верно?
- person Ann Zen; 22.06.2020
В конечном счете: потому что так сказано в определении языка.
Python решил сделать почти любое выражение неявно преобразуемым в логическое значение (True/False). Преобразование определяется в языке.
Для целочисленных типов преобразование состоит в том, что 0 равно False, остальные значения True.
И, конечно же, если выражение X равно False, то not X равно True по простому определению оператора not.
Похоже, вам нужно немного логического обзора. Все в мире python (и большей части программирования) сводится либо к True, либо к False. Возьмем, к примеру, целые числа. В python (и, вероятно, в большинстве языков) значение 0 переходит в False, а все остальное — в True. Вы можете получить значение true/false почти для всего в python, используя функцию bool
. Попробуйте bool(0)
или bool(2)
.
Теперь if
принимает выражение (по сути просто логическое значение) и, если оно равно True, выполняет блок кода, а если False — пропускает его.
x = 0
if x:
print("This will never be printed because x is", x, "and it's Boolean value is", bool(x))
Теперь not
принимает логическое значение и делает его противоположным. not True
это False
. not False
это True
. Это происходит, сколько бы раз ни было not
, поэтому not not True
будет True
.
x = 0
if not x:
print("This will print, because x is", 0, "the Boolean value of x is", bool(x), "and the not value of boolean x is", not bool(x))
... of the following statement...
Кажется, нам не хватает задуманного вами кода. Вы можете использовать кнопкуedit
, чтобы добавить его. - person Mark   schedule 21.06.2020