位置参数v.s.关键字argumen

2024-05-15 22:07:31 发布

您现在位置:Python中文网/ 问答频道 /正文

基于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)

问题>;我假设widthheight都是位置参数。那为什么我们还可以用关键字参数语法来调用它呢?


Tags: andandefault参数bythatisvalue
3条回答

您引用的文本用于函数的定义,与函数调用无关。在对该函数的调用中,您使用的是“命名参数”功能。你提供的链接质量不是很好,作者似乎混淆了两个不同的东西。

Python引用只引用与函数调用相关的位置参数和关键字参数(请参见section ^{})。

当他们谈论section ^{}中函数的定义时,这是一个完全不同的术语“默认参数值”。

我怀疑那些组装课程软件的人对Python不是很熟悉


举例来说,请参考以下定义和调用:

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.

=的含义会改变,这取决于它是在定义中还是在调用中。

在定义中,它将参数标记为可选并设置默认值。

在调用中,它只允许您指定哪些参数应该是哪些值,按照您希望的顺序。

关键字参数只是具有默认值的位置参数。必须指定所有没有默认值的参数。换句话说,关键字参数只是“可选的”,因为如果没有特别提供,它们将被设置为默认值。

位置参数可以按顺序使用值或通过命名每个值来调用。例如,以下三种方法都将以相同的方式工作:

def rectangleArea(width, height):
    return width * height

print(rectangleArea(1, 2))
print(rectangleArea(width=1, height=2))
print(rectangleArea(height=2, width=1))

相关问题 更多 >