Python 无关键字参数

Python 无关键字参数,python,Python,在Python中(假设函数参数的默认值为None), 传入关键字参数 (调用函数时)是否为无,并且根本不传递它 我只是想确保两者之间没有细微的语义差异 我特别是在谈论这个问题 和p0参数。如果不传递任何内容,该值将更改为指定的默认值。如果传递None,则它将不使用默认值 def foo(bar='foobar'): print(bar) foo() foo(bar=None) 产出: foobar None 有一个很大的区别: def f(x=3): print(x) d

在Python中(假设函数参数的默认值为
None
),
传入关键字参数
(调用函数时)是否为
,并且根本不传递它

我只是想确保两者之间没有细微的语义差异

我特别是在谈论这个问题


p0
参数。

如果不传递任何内容,该值将更改为指定的默认值。如果传递None,则它将不使用默认值

def foo(bar='foobar'):
    print(bar)

foo()
foo(bar=None)
产出:

foobar
None

有一个很大的区别:

def f(x=3):
    print(x)

def g():
    print("OK")

def h(x):
    print(x)
f()
输出
3
,而
f(无)
输出
None

g()
输出
OK
,而
g(None)
产生
TypeError

h()
引发
TypeError
,而
h(None)
输出
None



简而言之,使用
None
表示语义缺失,而不是语法缺失。

假设您需要函数中的
参数

如果不传递
key
参数,您将无法在关键字参数({keyrerror`)中访问
key


如果将
key
作为
None
传递,则关键字参数中
key
值将为
None`。

这取决于函数的声明方式。“None关键字用于定义空值,或者根本没有值。”这是否回答了您的问题?这是您的问题吗“如果None已经是参数的默认值,那么我将None作为参数传递会有区别吗?”"是的,
p0
如果你传入或不传入它,它将是
None
,因为函数签名中的默认值是
None
。谢谢。但是第二个例子不是我想的。函数确实有一些参数,例如
p0
,我说的不是pa用
None
值传递或传递它。第二个示例演示了在没有参数的情况下传递
None
是错误的。类似地(以及我应该在答案中添加的内容)如果期望参数没有默认值,则不传递值是错误的。感谢3个场景中的详细信息…我想这就是我需要的解释。