Hassas cevap: Hayır. Python tek yok yerleşik operatör opçevirebilir x = x or yiçine x op y.
Ama neredeyse öyle. Bitsel veya eşittir operatörü ( |=) , her iki işlenen de bir uyarı ile boole olarak değerlendiriliyorsa yukarıda açıklandığı gibi işlev görür. (Uyarı nedir? Cevap elbette aşağıdadır.)
İlk olarak, işlevselliğin temel gösterimi:
x = True
x
Out[141]: True
x |= True
x
Out[142]: True
x |= False
x
Out[143]: True
x &= False
x
Out[144]: False
x &= True
x
Out[145]: False
x |= False
x
Out[146]: False
x |= True
x
Out[147]: True
Uyarı, python'un kesin olarak yazılmamasından kaynaklanmaktadır ve bu nedenle, değerler bir ifadede boole olarak değerlendirilse bile, bitsel bir operatöre verilirse kısa devre yapılmayacaktır. Örneğin, bir listeyi temizleyen ve Truesilinen öğeler varsa geri dönen bir mantıksal işlevimiz olduğunu varsayalım :
def my_clear_list(lst):
if not lst:
return False
else:
del lst[:]
return True
Şimdi kısa devre davranışını şu şekilde görebiliriz:
x = True
lst = [1, 2, 3]
x = x or my_clear_list(lst)
print(x, lst)
Output: True [1, 2, 3]
Bununla birlikte, orbit düzeyinde veya ( |) ' ye geçmek kısa devreyi kaldırır, böylece işlev my_clear_listyürütülür.
x = True
lst = [1, 2, 3]
x = x | my_clear_list(lst)
print(x, lst)
Output: True []
Yukarıdaki x = x | my_clear_list(lst)eşdeğerdir x |= my_clear_list(lst).