当 '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
例如:
- a(None) 应该打印 1
- a() 应该打印 1
- a(2) 应该打印 2
有办法吗?
>>> 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
调用它只会把 None
到 a
.
当我想赋予 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)
我正在编写一个新的 python class 具有通用函数。有一次我有如下需求
def function(a=1):
....
....
print a # here I want a to be 1 if None or nothing is passed
例如:
- a(None) 应该打印 1
- a() 应该打印 1
- a(2) 应该打印 2
有办法吗?
>>> 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
调用它只会把 None
到 a
.
当我想赋予 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)