None关键字参数



在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 ofin your keyword arguments will beNone`。

最新更新