Python函数的参数

曾经终败给现在 2022-07-12 04:20 328阅读 0赞

VarArgs 参数

有时,你或许想定义一个能获取任意个数参数的函数,这可通过使用 * 号来实现。

  1. #!/usr/bin/python
  2. # Filename: total.py
  3. def total(initial=5, *numbers, **keywords):
  4. count = initial
  5. for number in numbers:
  6. count += number
  7. for key in keywords:
  8. count += keywords[key]
  9. return count
  10. print(total(10, 1, 2, 3, vegetables=50, fruits=100))
  11. 输出:
  12. $ python total.py
  13. 166

如何工作:
当我们定义一个带星的参数,像 *param 时,从那一点后所有的参数被收集为一个叫做 ’param’ 的列表。(译者注:如在该例中,首先会给 initial 的值由 5 变成 10 ,然后 numbers 将 1,2,3,收集作为一个列表 numbers=(1,2,3))。

类似地,当我们定义一个带两个星的参数,像 **param 时,从那一点开始的所有的关键字参数会被收集为一个叫做 ’param’ 的字典。(译者注:在该例子中,从 vegetables=50 后的所有参数收集为一个字典 keywords=’vegetables’: 50, ’fruits’:100)。

Keyword-only 参数

如果想指定特定的关键参数为 keywor-only 而不是位置参数,可以在带星的参数后申明:

  1. 1 #!/usr/bin/python
  2. 2 # Filename: keyword_only.py
  3. 3
  4. 4 def total(initial=5, *numbers, vegetables):
  5. 5 count = initial
  6. 6 for number in numbers:
  7. 7 count += number
  8. 8 count += vegetables
  9. 9 return count
  10. 10
  11. 11 print(total(10, 1, 2, 3, vegetables=50))
  12. 12 print(total(10, 1, 2, 3,))
  13. 13 # Raises error because we have not supplied a default argument
  14. value for 'vegetables'
  15. 输出:
  16. $ python keyword_only.py
  17. 66
  18. Traceback (most recent call last):
  19. File "test.py", line 12, in <module>
  20. print(total(10, 1, 2, 3))
  21. TypeError: total() needs keyword-only argument vegetables

如何工作:
在带星号的参数后面申明参数会导致 keyword-only 参数。如果这些参数没有默认值,且像上面那样不给关键参数赋值,调用函数的时候会引发错误。

如果你想使用 keyword-only 参数,但又不需要带星的参数,可以简单地使用不适用名字的空星,如 def total(initial=5, *, vegetables)。

发表评论

表情:
评论列表 (有 0 条评论,328人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Python 函数参数

    使用位置参数 有时候,方法接收的参数数目可能不一定,比如定义一个求和的方法,至少要接收两个参数: def sum(a, b): return a

    相关 python函数参数

    Python的函数定义中除了正常定义的必选参数外,还可以使用默认参数、可变参数和关键字参数 1、必选参数:须以正确的顺序传入函数。调用时的数量必须和声明时的一样。调用函数是必

    相关 Python函数参数

    定义函数的时候,我们把参数的名字和位置确定下来,函数的接口定义就完成了。对于函数的调用者来说,只需要知道如何传递正确的参数,以及函数将返回什么样的值就够了,函数内部的复杂逻辑被