您可以使用形式参数列表中的变量作为关键字来传递值。使用关键字参数是可选的。但是,您可以强制函数仅通过关键字来接收参数。为此,您应该在关键字专用参数列表前放置一个星号(*)。
假设我们有一个带有三个参数的函数,其中我们希望第二个和第三个参数是关键字专用的。为此,在第一个参数后放置*。
关键字专用参数的示例
内置的print()
函数就是一个关键字专用参数的例子。您可以在括号内给出一系列表达式进行打印,默认情况下,打印的值之间由空格分隔。您可以使用"sep"参数来指定其他的分隔字符。
示例:使用"sep"作为非关键字参数
print()
函数中的sep参数是关键字专用的。尝试将其作为非关键字参数使用。
print("Hello", "World", "-")
您将得到不同的输出,不是预期的结果:
Hello World -
在用户定义的方法中使用关键字专用参数
为了使参数成为关键字专用的,在创建用户定义函数时,在参数前放置星号(*)。
那些在给定类内由我们定义用于执行某些动作的函数称为用户定义函数。它们不是Python预定义的。
示例
在下面的用户定义函数intr()
中,"rate"参数是关键字专用的。调用此函数时,rate的值必须通过关键字传递。
def intr(amt, *, rate):
val = amt * rate / 100
return val
interest = intr(1000, rate=10)
print(interest)
输出将是:
100.0
然而,如果您尝试使用默认的位置方式来调用上述函数,您将会遇到错误。
示例
下面的代码展示了当需要关键字专用参数时,使用位置参数是不可能的。
def intr(amt, *, rate):
val = amt * rate / 100
return val
interest = intr(1000, 10)
print(interest)
执行此代码将显示以下结果:
interest = intr(1000, 10)
^^^^^^^^^^^^^^
TypeError: intr() takes 1 positional argu