为什么短路在python的“全部”函数中不起作用?

巴拉圭:

我正在尝试使用python的all()功能检查一些条件

我的理解是,此代码会False在函数评估返回状态时立即将其短路False如果这种理解是正确的,那么有人可以解释以下内容:

>>> a = None
>>> b = None
>>> all([a is None, b])
False
>>> all([a is None, b, "text" in b])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: argument of type 'NoneType' is not iterable
>>> b = {"text": "Text I'm looking for"}
>>> all([a is None, b, "text" in b])
True

我第一次运行all()表明它的评估结果正确,False因此,如果我添加另一个测试,为什么会中断?我是否误解了短路的原理?

我已经在python 3.8.3和python 2.7.18中测试了此结果。

致癌物质:

这与没有任何关系all您正在创建一个列表文字,它将在传递给之前评估其内容all

>>> [a is None, b, "text" in b]

Traceback (most recent call last):
  File "<input>", line 1, in <module>
TypeError: argument of type 'NoneType' is not iterables

如果您希望它按预期工作,则需要一个惰性结构而不是列表:

a = None
b = None

def lazy():  # A lazy generator
    yield a is None
    yield b
    yield "text" in b

>>> all(lazy())
False

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

任何/所有python短路:为什么以下代码不起作用?

为什么restore()在嵌套的延迟函数中不起作用?

为什么空赋值在函数中不起作用

为什么我的this.setState在函数中不起作用?

为什么replace()在我的Python函数中不起作用?

为什么useContext在我的函数中不起作用?

为什么我在构造函数中的绑定不起作用?

为什么我的def函数在Python中不起作用?

为什么exp函数在pyspark中不起作用?

Python函数退出不起作用-为什么?

为什么变异函数在R中不起作用?

为什么Prolog中的min()函数不起作用?

为什么陷阱信号在Shell函数中不起作用?

为什么此.slideToggle函数在jQuery中不起作用?

为什么函数__construct在PHP中不起作用?

为什么python中的sum函数不起作用?

为什么我的 scanf 在函数中不起作用?

为什么 if/else 语句在我的函数中不起作用?

React - 为什么 onClick 中的这个函数不起作用?

为什么 `eval` 在 Python 类函数中不起作用?

为什么 Await 在异步函数中不起作用?

map() 函数中的 counter 不起作用,为什么?

为什么“函数尝试”在 C++ 中不起作用?

为什么订阅在构造函数中不起作用?

为什么默认参数在模板函数中不起作用?

为什么 onclick 函数在 html -angular 中不起作用

为什么我的 min() 函数在 Python 中不起作用

为什么 Logical Or 在我的函数中不起作用

为什么 Python read() 函数不起作用?