Python 函数位置参数
在定义函数时,可以设置一个或多个参数不能通过关键字传入其值。这样的参数被称为位置参数。
Python内置的input()函数就是位置参数的一个示例。input函数的语法如下:
input(prompt = "")
提示是为了用户的利益而添加的一段解释性字符串。例如 –
name = input("enter your name ")
不过,在括号内不能使用 prompt 关键字。
name = input (prompt="Enter your name ")
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: input() takes no keyword arguments
使用“/”符号使一个参数成为位置参数。在这个符号之前的所有参数都将被视为位置参数。
示例
我们通过在末尾添加“/”将intr()函数的两个参数都设置为位置参数。
def intr(amt, rate, /):
val = amt*rate/100
return val
如果我们尝试使用参数作为关键字,Python会抛出以下错误信息:
interest = intr(amt=1000, rate=10)
^^^^^^^^^^^^^^^^^^^^^^^
TypeError: intr() got some positional-only arguments passed as keyword arguments: 'amt, rate'
一个函数可以被定义为只带有关键字参数和只带有位置参数。
def myfunction(x, /, y, *, z):
print (x, y, z)
在这个函数中,x是一个必需的位置参数,y是一个常规的位置参数(你可以将其作为关键字使用),z是一个仅限关键字参数。
以下函数调用是有效的 –
myfunction(10, y=20, z=30)
myfunction(10, 20, z=30)
然而,这些调用会引发错误−
myfunction(x=10, y=20, z=30)
TypeError: myfunction() got some positional-only arguments passed as keyword arguments: 'x'
myfunction(10, 20, 30)
TypeError: myfunction() takes 2 positional arguments but 3 were given