如果Python函数在参数中接收到None
,许多讨论和SO搜索都无法最终回答提供默认值的最佳/最安全/最Pythonic方式的问题。在重要的情况下,这特别涉及到datetime
参数,但是理想情况下,我们对所有参数类型标准化我们的方法。
这是两种不断出现的“正确”方法:
myval if myval else defaultval
myval or defaultval
它们在功能上是否相等,或者两者之间存在细微差别?我非常喜欢第二种选择的简洁性和清晰度,但是第一种选择的拥护者表示这并不总是安全的。来自比我有更多python经验的人(例如几乎任何人)的任何指导将不胜感激。
最佳答案
1是迄今为止条件赋值的首选方法(显式优于隐式)
甚至更明确一点
myval = myval if myval is not None else defaultval
甚至更好
def some_function(arg1,arg2="defaultValue"):
myval = arg2
主要的问题是
x = x or y
永远不能被赋值为0的x或一个空数组或任何其他伪造的值
关于python - 在python中提供默认值的最惯用方式?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23298190/