当 'None' 或没有传递参数时,如何接受函数中的默认参数?

How can I accept default parameter in function when 'None' or no argument is passed?

我正在编写一个新的 python class 具有通用函数。有一次我有如下需求

def function(a=1):
    ....
    ....
    print a # here I want a to be 1 if None or nothing is passed

例如:

有办法吗?

>>> def function(a=1):
...     print(a if a else 1)
... 
>>> function(None)
1
>>> function(2)
2
>>> function(1)
1
>>> function(123)
123
>>> function(0)
1
def function(a=1):
    if a is None:
        a = 1

应使用 None 作为默认参数。

def function(a=None):
    if a == None:
        a = 1
    print a

否则在多次调用函数时会运行出问题。

def function(a=1):
    print(1 if a is None else a)

function()
function(None)
function(2)
function(0)

输出:

1
1
2
0

仅当您在调用函数时根本不传递该值时,才会使用您指定的默认值。如果您将它指定为 a=1 那么用零参数调用它确实会使用 1 作为默认值,但是用 None 调用它只会把 Nonea.

当我想赋予 None 和 "not specified at all" 相同的含义时,我这样做:

def function(a=None):
    if a is None:
        a = 1
    ...

这样它就会如你所愿。此外,与

等其他解决方案相比
def function(a=1):
    if a is None:
        a = 1
    ...

您只指定了一次 "default" 值(1)。

您可以定义一个带有默认参数的函数,稍后您可以检查传递的值并打印它:

def fun(a=1):
    a = 1 if a is None else a
    print(a)