以下两个代码块之间是否有任何功能差异?我主要关心调用函数的顺序。函数是否在第一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()
and
if
表达式
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
, 和,而嵌套或表达式方法只需要定义函数,只要前面的函数返回一个真值即可。func4
all()
if
and