Most of the time, you then want to use a conditional expression instead:
myvar = b if a else c
Short-circuiting is very Pythonic however, just be aware of the pitfalls where b
is false-y; using short-circuiting will result in different result in that case. Most of the time, you do not want to assign c
instead.
Even in that case, you can still get the same result with an adjusted condition:
myvar = b if a and b else c
Short-circuiting is great for defaults:
foo = somevar or 'bar'
or for making sure pre-conditions are met:
foo = somevar and function_raises_exception_if_passed_empty_value(somevar)
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…