请参阅下面的代码:
#!/usr/bin/python
# Filename: total.py
def total(initial=5, *numbers, **keywords):
count = initial
for number in numbers:
count += number
for key in keywords:
count += keywords[key]
return count
print(total(10, 1, 2, 3, vegetables=50, fruits=100))
有人能解释一下*数字和**关键字是如何提取论点的吗? 一个简单的解释是非常值得赞赏的 提前谢谢
在代码中,
numbers
被分配了(1,2,3)元组。keywords
被分配了一个字典,包含vegetables
和fruits
。一个星(
*
)定义位置参数。这意味着您可以接收任意数量的参数。可以将传递的参数视为元组。双星(
**
)定义关键字参数。参考材料是可用的here。
示例
Python2.x(仅在关键字参数之前)
Python 3.x(仅带关键字参数)
尽管一个经验丰富的程序员理解2.x中发生的事情,但这是违反直觉的(只要有足够的位置参数,位置参数就绑定到
foo=
而不管关键字参数是什么)Python 3.x使用PEP-3102引入了更直观的仅关键字参数(varargs后面的关键字参数只能由名称绑定)
相关问题 更多 >
编程相关推荐