以下两个代码块之间是否有任何功能差异?我主要关心调用函数的顺序。函数是否在第一if条语句中按顺序执行?
第一的,
if func1() and func2() and func3() and func4():
do stuff
第二,
if func1():
if func2():
if func3():
if func4():
do stuff
以下两个代码块之间是否有任何功能差异?我主要关心调用函数的顺序。函数是否在第一if条语句中按顺序执行?
第一的,
if func1() and func2() and func3() and func4():
do stuff
第二,
if func1():
if func2():
if func3():
if func4():
do stuff
是的,Python 从左到右计算表达式。这些函数将以相同的顺序调用。从参考文档:
Python 从左到右计算表达式。
此外,在使用和嵌套表达式时,func2()如果返回 false 值,将不会被调用。引用布尔操作文档:func1()andif
表达式
x and y首先计算x; 如果x为假,则返回其值;否则,y评估并返回结果值。
因为在表达式中func1() and func2(),如果返回 false 值func2()将不会被评估,根本不会被调用。func1()func2()
您可以在这里使用第三种替代all()方法:
functions = (func1, func2, func3, func4)
if all(f() for f in functions):
只要前面的函数返回一个真值并按顺序调用函数,它就会再次调用函数。
该all()方法确实需要在调用之前实际定义func1, func2, func3, 和,而嵌套或表达式方法只需要定义函数,只要前面的函数返回一个真值即可。func4all()ifand