Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 是否';不是无';有什么用吗?_Python_Python 3.x - Fatal编程技术网

Python 是否';不是无';有什么用吗?

Python 是否';不是无';有什么用吗?,python,python-3.x,Python,Python 3.x,我惊讶地发现“Y中的X不是无”并没有抛出异常。我无法理解Python实际上是如何解释这一点的。“不是无”操作的值是什么?这有什么用吗 >>> "asdf" in {} is not None False >>> >>> "asdf" in {"asdf": 1} is not None True >>> 巨蟒再次攻击 根据说12(这是False),而是(4>3)和(3>2)(这是True) 不是None顺便说一句,的标

我惊讶地发现“Y中的X不是无”并没有抛出异常。我无法理解Python实际上是如何解释这一点的。“不是无”操作的值是什么?这有什么用吗

>>> "asdf" in {} is not None
False
>>> 
>>> "asdf" in {"asdf": 1} is not None
True
>>> 
巨蟒再次攻击

根据说
1<2<3
等同于
1<2和2<3
的相同规则,这些表达式:

"asdf" in {} is not None
"asdf" in {"asdf": 1} is not None
相当于:

"asdf" in {} and {} is not None
"asdf" in {"asdf": 1} and {"asdf": 1} is not None

@另一个人已经指出了这个问题,我想我应该为那些不明白的人补充一点解释

这里要意识到的关键是,
不是
类似于
=
中的code>和
也属于同一类别-它们都是比较运算符。这些运算符适用于它们周围的所有类型的值

因为Python允许链接比较运算符,所以最主要的事情是计算它们的求值顺序以及它们对什么进行操作

考虑:

>>> "asdf" in {} is not None
False
>>> ("asdf" in {}) is not None
True
>>> ("asdf" in {}) and ({} is not None)
False
>>> {} is not None
True
因此,{}中的表达式
“asdf”不是None
分解为
,Python将其计算为
,所以
({}中的asdf)和({}不是None)

Python之所以不将其视为
({}中的asdf)并不是None
,这在其他一些语言中是有意义的,是因为Python不希望
4>3>2
评估为
(4>3)>2
(这是
False
),而是
(4>3)和(3>2)
(这是
True


不是None
顺便说一句,
的标识与None的标识相同,换句话说“
指的是与
None
相同的东西”,这与说它们具有相同的值(或“它们的计算结果相同”)略有不同。由于只有一个
None
,如果一个变量名指的是
None
,考虑到
({})中的asdf)不是None,第一个例子非常有趣。
返回
True
是一个<代码>非无
是操作的右侧-它与左侧的(已计算)表达式进行比较<代码>是
比较身份-
是一个对象,以及
-
将永远不会是
@wwii好点。左侧应该总是返回True/False,两者都不是None,所以整行应该总是返回False吗?啊,是的。非常感谢。