Pythonのショートサーキットテクニック

短絡とは、式の真理値がすでに決まっている場合にブール演算の実行を停止することを意味します。表現の評価は左から右へ行われます。 Pythonでは、短絡はさまざまなブール演算子や関数によってサポートされています。 以下の表は、ブール式の場合の短絡の洞察を示しています。ブール演算子は優先順位の昇順で並べられています。 または:Pythonインタープリタがスキャンまたは式を実行するときに、最初のステートメントを受け取り、それが真であるかどうかを確認します。最初のステートメントがtrueの場合、Pythonは2番目のステートメントをチェックせずにそのオブジェクトの値を返します。プログラムは2番目のステートメントを気にする必要はありません。最初の値がfalseの場合、Pythonは2番目の値をチェックし、結果は後半に基づきます。 and式の場合、Pythonは最初のステートメントが偽であるかどうかをチェックするためにショートサーキットテクニックを使います。それから文全体が偽でなければならないので、その値を返します。最初の値がtrueの場合に限り、2番目のステートメントをチェックして値を返します。 andを含む式は、expressionの真理値が達成されたときに実行を停止します。評価は左から右へ行われます。

pythonの組み込み関数all()とany()も短絡をサポートしています。以下の例は、それがどのように機能するかについての明確な洞察をあなたに与えるでしょう。

条件演算子も、式の結果が得られたときにそれ以上実行する必要がないため、短絡に従います。

🐶 🐍 🐶Pythonコードの例を示すで

# python code to demonstrate short circuiting  
# using and and or 
  
# helper function 
def check(): 
    return "codes"
  
# using an expression to demonstrate 
# prints "codes", and gets executed  
# as both are required to check truth value 
print (1 and check()) 
  
      
# using an expression to demonstrate 
# prints 1 
# as only if 1st value is true, or  
# doesnt require call check() fun 
print (1 or check()) 
  
# using an expression to demonstrate 
# prints "codes" 
# the value returns true when check  
# is encountered. 1 is not executed 
print (0 or check() or 1) 
  
# using an expression to demonstrate 
# prints 1 
# as last value is required to evaluate 
# full expression because of "and" 
print (0 or check() and 1) 
# python code to demonstrate short circuiting  
# using all() and any() 
  
# helper function 
def check(i): 
    print ("codes") 
    return i 
  
# using all() 
# stops execution when false occurs 
# tells the compiler that even if one is  
# false, all cannot be true, hence stop  
# execution further. 
# prints 3 "codes"  
print (all(check(i) for i in [1, 1, 0, 0, 3])) 
  
print("\r") 
  
# using any() 
# stops execution when true occurs 
# tells the compiler that even if one is  
# true, expression is true, hence stop  
# execution further. 
# prints 4 "codes"  
print (any(check(i) for i in [0, 0, 0, 1, 3])) 
# python code to demonstrate short circuiting  
# using conditional operators 
  
# helper function 
def check(i): 
    print ("codes") 
    return i 
  
# using conditional expressions 
# since 10 is not greater than 11 
# further execution is not taken place  
# to check for truth value. 
print( 10 > 11 > check(3) ) 
  
print ("\r") 
  
# using conditional expressions 
# since 11 is greater than 10 
# further execution is taken place  
# to check for truth value. 
# return true as 11 > 3 
print( 10 < 11 > check(3) ) 
  
  
print ("\r") 
  
  
# using conditional expressions 
# since 11 is greater than 10 
# further execution is taken place  
# to check for truth value. 
# return false as 11 < 12 
print( 10 < 11 > check(12) ) 

Last Updated: 5/19/2019, 1:43:17 AM