首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python是否在内置函数(如min() )中实现短路?

Python是否在内置函数(如min() )中实现短路?
EN

Stack Overflow用户
提问于 2022-05-13 12:01:22
回答 1查看 29关注 0票数 0

在可能的情况下,short-circuiting在内置函数中实现Python3,就像对布尔语句一样吗?

一个具体的例子是下面的代码片段:

代码语言:javascript
复制
min((20,11), key = lambda x : x % 10) # 20

Python是否事先计算作为键参数传递的函数的最小值为0,因此在计算可迭代传递( 20 )中的第一个整数(20% 10 )等于0之后立即停止?还是必须在返回答案之前对迭代中的所有元素进行评估?

我想短路并不总是可能发生的,特别是对于更复杂的函数,但是对于众所周知的内置函数或者像%这样的运算符来说又如何呢?

我在官方文件里找不到答案。

谢谢,

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-13 14:19:20

python必须计算迭代中的所有值,因为languaje逐个元素计算元素,如果在元组中有一个不是数字的值,则在执行%操作时它将触发异常。Python无法猜测列表中的内容。您可以通过定义函数而不是lambda来测试这一点,并在其中设置调试点。

代码语言:javascript
复制
def my_mod(x): 
    import ipdb; ipdb.set_trace() 
    return x % 20 

然后调用函数

代码语言:javascript
复制
min((20,11), key = my_mod)

您可以用以下方法快速完成错误测试用例

代码语言:javascript
复制
min((20,11, "s"), key = my_mod)

它将触发异常,但首先必须计算列表中的所有前一个元素。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72229276

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档