Python中带*args参数的函数无参调用如何返回None?
可变位置参数求和函数的修改方案
原函数无参时返回0的原因是,函数初始赋值累加变量k = 0,无参数调用时*args会是空元组,for循环不会执行,直接返回初始的0值。要实现无参返回None,只需增加参数空值判断即可:
保留原有循环逻辑的修改
直接在函数开头加判断,无参数时直接返回None:
def sum_func(*args): if not args: return None k = 0 for i in args: k += i return k
实际调用效果:
sum_func()→ 返回Nonesum_func(7)→ 返回7sum_func(1, 3, 6)→ 返回10
更精简的写法
可以直接用Python内置的sum函数配合三元判断,实现同样的逻辑,代码更短:
def sum_func(*args): return sum(args) if args else None
注:这里的三元判断逻辑等价于“当args不为空时,返回args的求和结果;否则返回None”。
内容的提问来源于stack exchange,提问作者Lefteris Kyprianou
相关产品推荐
相关产品推荐

