【问题标题】:Order of using positional and keyword arguments使用位置和关键字参数的顺序
【发布时间】:2021-02-26 00:25:47
【问题描述】:

显然,如果在调用函数时需要同时使用关键字和位置参数,则必须先使用位置参数。但是下面的代码会报错;

def greet(first_name, l_name):
   print(f'Hi, {first_name} {last_name}!')

greet('Holmes',
first_name='Harry')

这是否意味着如果你同时使用两者,你​​必须首先使用位置参数in所需的顺序,然后才使用关键字参数?

【问题讨论】:

    标签: python-3.x function keyword-argument positional-parameter


    【解决方案1】:

    位置参数必须按照函数中声明的顺序传递。所以如果你传递三个位置参数,它们必须到函数的前三个参数,而这三个参数不能通过关键字传递。如果您希望能够按关键字乱序传递第一个参数,所有您的参数必须按关键字传递(或者根本不传递,如果它们有默认值)。

    如果有帮助的话,Python的绑定机制大致是:

    1. 将位置参数一一分配给函数的顺序参数。现在已设置这些参数。
    2. 以任意顺序将关键字参数分配给其余参数。如果其中一个关键字参数与已按位置分配的参数匹配(或相同的关键字参数被传递两次),则为错误。

    在你的情况下,这意味着:

    greet('Holmes', first_name='Harry')
    

    首先将'Holmes' 绑定到first_name。然后它看到你试图再次将first_name 作为关键字参数传递并反对。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-12
      • 2023-03-31
      • 2012-11-21
      • 2018-02-19
      • 2018-03-03
      • 2020-11-18
      • 1970-01-01
      • 2017-06-29
      相关资源
      最近更新 更多