首页 > 解决方案 > 没有位置参数的仅关键字参数

问题描述

在此处输入图像描述

请解释这段突出显示的代码,特别是方法定义所在的部分。问题:

  1. 为什么星号在没有任何参数的情况下在开始,这在python中是什么意思。
  2. 调用函数“选择”之前的星号,是什么意思?
  3. 它如何强制 python 使用仅限关键字的参数?

标签: pythonargumentskeyword

解决方案


我觉得图片清楚地解释了它,但这是一个简化版本:

*结束位置参数。在 python 中,位置参数总是在关键字参数之前。

def test(a, v, b):
  print(v)

test(3, v=7, 5) # illegal, kwargs have to be last (SyntaxError) 
test(3, v=7, b=5) # legal
test(3, 7, 5) # legal

但是假设我们希望用户始终指定v并且b在离开a位置的同时。

def test(a, *, v, b):
  print(v)

test(3, v=7, b=5) # legal
test(3, 7, 5) # illegal, takes one positional argument but 3 were given
test(3, 5, v=7, b=5) # illegal, 2 were given

推荐阅读