如果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/

    10-12 02:06