Python - 仅位置参数


可以定义一个函数,其中一个或多个参数不能使用关键字接受其值。这样的参数可以称为仅位置参数。

Python 的内置 input() 函数是仅位置参数的示例。输入函数的语法是 -

input(prompt = "")

提示是为了用户的利益而提供的解释性字符串。例如 -

name = input("enter your name ")

但是,您不能在括号内使用提示关键字。

   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