如何通过IF语句简化变量分配

时间:2019-09-24 14:50:29

标签: python python-3.x

我有简单的Python 3表达式:

if a:
    b = a
else:
    print('error')

但是,就我而言,恰好发生了'a'等于一个非常冗长但必要的正则表达式搜索命令(此处不相关。)我可以简化上述代码,以便:

1)我不需要为'a'赋值。

2)我不需要在表达式中两次声明'a'的值。

谢谢!

2 个答案:

答案 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