Python 简明教程

Python - Positional-Only Arguments

Positional Only Arguments

Python 中可以定义 function ,其中一个或多个参数不能用关键字接受其值。此类参数称为仅位置参数。

要将参数设为仅位置,请使用正斜杠 (/) 符号。该符号之前的所有参数都将被视为仅位置。

Python 的 built-in input() function 是仅位置参数的示例。input 函数的语法为 −

input(prompt = "")

提示是供用户受益的解释性字符串。但是,你不能在圆括号内使用 prompt 关键字。

Example

在此示例中,我们正在使用 prompt 关键字,这会导致错误。

name = input(prompt="Enter your name ")

执行此代码时,将显示以下错误消息 −<>

   name = input (prompt="Enter your name ")
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: input() takes no keyword arguments

Positional-Only Arguments Examples

让我们借助一些示例来理解仅位置参数 −

Example 1

在此示例中,我们通过在末尾放置“/”将 intr() 函数的两个参数设为仅位置。

def intr(amt, rate, /):
   val = amt * rate / 100
   return val

print(intr(316200, 4))

运行该代码后,将显示以下结果 −

12648.0

Example 2

如果我们尝试使用参数作为关键字,Python 会引发错误,如以下示例所示。

def intr(amt, rate, /):
   val = amt * rate / 100
   return val

print(intr(amt=1000, rate=10))

运行此代码后,将显示以下错误消息 −

   interest = intr(amt=1000, rate=10)
              ^^^^^^^^^^^^^^^^^^^^^^^
TypeError: intr() got some positional-only arguments passed as keyword arguments: 'amt, rate'

Example 3

该函数可以按特定的方式定义,以便具有某些仅关键字和某些仅位置的参数。在此,x 是必需的仅位置参数,y 是常规位置参数,而 z 是仅关键字参数。

def myfunction(x, /, y, *, z):
   print (x, y, z)

myfunction(10, y=20, z=30)
myfunction(10, 20, z=30)

以上代码将显示以下输出 −

10 20 30
10 20 30