我有简单的Python 3表达式:
if a:
b = a
else:
print('error')
但是,就我而言,恰好发生了'a'等于一个非常冗长但必要的正则表达式搜索命令(此处不相关。)我可以简化上述代码,以便:
1)我不需要为'a'赋值。
2)我不需要在表达式中两次声明'a'的值。
谢谢!
答案 0 :(得分:2)
在Python 3.8中,将引入named assignments,让您可以这样做:
if a := complicated_expression:
b = a
建议
b = a or b
有效,但要求b
事先分配一个值。如果条件仅检查a
的真实性,它也可以工作
对于具有任意条件的严格单线,您始终可以使用单例生成器技巧:
b = next((a for a in (complex_expression for _ in '_') if condition(a)), None)
但这应该纯粹是学术上的。
答案 1 :(得分:0)
您可以这样做:
b = a or False
if b:
print("okay")
else:
print("error")
其中False
可以是任何特殊值,您可以自行设置,如果b
虚假,则可以将其用作a
的默认值(前提是{{1 }}(如果默认值更改)。
if