在Python中(假设函数参数的默认值为None
(,
将关键字参数
作为None
传入和根本不传入之间有什么区别吗?
我只是想确保两者之间没有一些微妙的语义差异。
我说的是这个特别的scipy.optimize.curve_filt.
以及CCD_ 3参数。
有一个非常大的区别:
def f(x=3):
print(x)
def g():
print("OK")
def h(x):
print(x)
f()
输出3
,而f(None)
输出None
。
g()
输出OK
,而g(None)
产生TypeError
。
h()
产生一个TypeError
,而h(None)
输出None
。
简单地说,使用None
表示语义缺失,而不是句法缺席。
如果不传递任何内容,则该值将更改为指定的默认值。如果通过"无",则不会使用默认值。
def foo(bar='foobar'):
print(bar)
foo()
foo(bar=None)
输出:
foobar
None
假设函数中需要key
参数;
如果不传递key
参数,则在关键字参数({KeyError`(中根本无法访问key
如果将key
传递为None
,则value of
键in your keyword arguments will be
None`。