如何用Python实现Lua风格的变量默认值单行赋值?
Python中的单行默认值赋值实现
当然有,Python提供了几种和Lua类似的简洁单行写法,完全可以替代冗长的条件判断:
1. 直接使用or运算符(和Lua逻辑一致)
这是最接近Luaarg or 0的写法,利用Python逻辑运算符的短路特性:如果arg为假值(包括None、0、空字符串、空列表等),就取右边的默认值;否则取arg本身。
示例代码:
def f(arg): N = arg or 0 print(N) f(None) # 输出:0 f(5) # 输出:5
单独变量赋值场景:
arg = None N = arg or 0 # N = 0 arg = 5 N = arg or 0 # N = 5
2. 精确判断None的三元表达式
如果你的场景中,arg可能是0、空字符串这类合法的假值(不想被替换成默认值),可以用三元表达式精准判断arg是否为None:
arg = 0 N = arg if arg is not None else 0 # N = 0(保留原本的0) arg = "" N = arg if arg is not None else 0 # N = ""(保留原本的空字符串) arg = None N = arg if arg is not None else 0 # N = 0(仅当arg为None时用默认值)
3. 函数参数默认值(适合函数场景)
如果是函数参数的默认值需求,直接在函数定义时设置默认值是最简洁的方式:
def f(arg=0): print(arg) f() # 输出:0 f(5) # 输出:5
内容的提问来源于stack exchange,提问作者Steven Andrews Student
相关产品推荐
相关产品推荐

