首页 > 解决方案 > 如何通过 IF 语句简化变量赋值

问题描述

我有简单的 Python 3 表达式:

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

但是在我的情况下,'a'恰好等于一个非常冗长但必要的正则表达式搜索命令(这里不相关。)我可以简化上面的代码,以便:

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

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

谢谢!

标签: pythonpython-3.x

解决方案


在 Python 3.8 中,将引入命名赋值,让您可以:

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)

但这应该被认为是纯粹的学术性的。


推荐阅读