Why does it work like this, because None
works for equivalence like null
, and there is no value in a
.
According to the idea, it should turn out to be True
because the value None
has nothing or is equal to 0
or False
, but for some reason when entering such data into the variable a
returns False
Could you explain why this is happening.
& gt; & gt; & gt; a = ""
& gt; & gt; & gt; a == None
False
& gt; & gt; & gt; a = "0"
& gt; & gt; & gt; a == None
False
& gt; & gt; & gt; a = 0
& gt; & gt; & gt; a == None
False
& gt; & gt; & gt;
Answer 1, authority 100%
a
you have this name. Using the =
operator you attach this name to different objects (empty string ''
, string with character '0'
(U + 0030), integer number 0
– objects are created by the corresponding constants in the source code). Strings are objects of type str in Python. An integer is an int object.
a == None
compares these objects to a None object. No object of type str or int can be equal to None. As an aside, None is also a Python object (of type NoneType). It exists in a single copy in the program, so it should be compared using the is
operator: a is None
(is the same object or not. Purpose ==
compare values objects).
You were probably interested in the concept of “truthiness” in Python (meaning in a boolean context) and a really empty string (like other empty containers) and 0 integer are Falsey in Python:
if not a:
print (f '{a! r} is Falsey')
See Truth Value Testing .
Note '0'
is not an empty string, so bool ('0') is True
. Python is a strongly typed language. String to a number or to None, the object will not implicitly turn into . The names themselves, such as a
, can refer to any object at different times. But the name must refer to some object, otherwise you will get NameError
.
Answer 2, authority 100%
In the first case, the a
variable contains an empty string. The second line contains a zero character. In the third, the number 0. In all three cases, there is something in the variable.