gpt4 book ai didi

python "if"与 "and"函数执行顺序

转载 作者:太空宇宙 更新时间:2023-11-04 08:12:28 25 4
gpt4 key购买 nike

下面两段代码在功能上有区别吗?我主要关心调用函数的顺序。函数是否在第一个 if 语句中按顺序执行?

首先,

if func1() and func2() and func3() and func4():
do stuff

其次,

if func1():
if func2():
if func3():
if func4():
do stuff

最佳答案

是的,Python 从左到右计算表达式。这些函数将以相同的顺序调用。来自reference documentation :

Python evaluates expressions from left to right.

此外,如果 func1() 返回假值,则不会调用 func2(),无论是在使用 and 还是在嵌套 if 表达式。引用 boolean operations documentation :

The expression x and y first evaluates x; if x is false, its value is returned; otherwise, y is evaluated and the resulting value is returned.

因为在表达式 func1() 和 func2() 中,如果 func1() 返回 false,则不会对 func2() 求值值,func2() 根本没有被调用。

您可以在这里使用第三种选择,使用 all() function :

functions = (func1, func2, func3, func4)
if all(f() for f in functions):

只要前面的函数返回真值,它就会再次调用函数,并按顺序调用函数。

all() 方法确实需要func1func2func3func4 实际上都是在调用 all() 之前定义的,而嵌套的 ifand 表达式只要前面的函数返回真值,方法就只需要定义函数。

关于python "if"与 "and"函数执行顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19913290/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com