はい、Python は式を左から右に評価します。関数は同じ順序で呼び出されます。リファレンス ドキュメントから:
Python は式を左から右に評価します。
さらに、式を使用する場合とネストする場合の両方で、false 値が返されたfunc2()
場合は呼び出されません。ブール演算のドキュメントを引用:func1()
and
if
式x and y
は最初に評価されx
ます。が false の場合x
、その値が返されます。それ以外の場合y
は評価され、結果の値が返されます。
式func1() and func2()
では、 false の値が返されたfunc2()
場合は評価されないため、は一切呼び出されません。func1()
func2()
all()
関数を使用して、ここで 3 番目の代替手段を使用できます。
functions = (func1, func2, func3, func4)
if all(f() for f in functions):
これも、前の関数が真の値を返し、関数を順番に呼び出す限り、関数のみを呼び出します。
このall()
アプローチではfunc1
、 、func2
、func3
、およびfunc4
が を呼び出す前にすべて実際に定義されている必要がありますall()
が、ネストされたif
orand
式のアプローチでは、前の関数が真の値を返す限り、関数を定義する必要があるだけです。