基于 this
A positional argument is a name that is not followed by an equal sign (=) and default value.
A keyword argument is followed by an equal sign and an expression that gives its default value.
def rectangleArea(width, height):
return width * height
print rectangleArea(width=1, height=2)
问题。 我假设 width
和 height
都是位置参数。那为什么我们也可以用关键字参数语法来调用它呢?
最佳答案
你引用的那段文字似乎对两个完全不同的事情感到困惑:
- 位置和关键字参数是调用函数的一个特性(参见Python reference section
5.3.4 Calls
)。 - 默认值是函数定义的一个特性, 根据 section
7.6 Function definitions
我怀疑将这些课件放在一起的人完全熟悉 Python :-) 因此,您提供的链接质量不是很好。
在您对函数的 调用 中,您使用的是“关键字参数”功能(其中参数被命名而不是依赖于它的位置)。没有它,值将绑定(bind)到仅基于顺序的名称。所以,在这个例子中,下面的两个调用是等价的:
def process_a_and_b(a, b):
blah_blah_blah()
process_a_and_b(1, 2)
process_a_and_b(b=2, a=1)
进一步举例,引用下面的定义和调用:
def fn(a, b, c=1): # a/b required, c optional.
return a * b + c
print(fn(1, 2)) # returns 3, positional and default.
print(fn(1, 2, 3)) # returns 5, positional.
print(fn(c=5, b=2, a=2)) # returns 9, named.
print(fn(b=2, a=2)) # returns 5, named and default.
print(fn(5, c=2, b=1)) # returns 7, positional and named.
print(fn(8, b=0)) # returns 1, positional, named and default.
关于python - 位置参数与关键字参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9450656/