Python 函数中的
在 Python 中,*(双星/星号)和 (星号) /星号)函数定义和调用中的符号在处理变量中起着至关重要的作用
语法
def foo(x, y, **kwargs): pass
表示函数 foo 可以接受任意数量的关键字参数。这些关键字参数被收集到一个名为 kwargs 的字典中。例如:
def bar(**kwargs): for a in kwargs: print(a, kwargs[a]) # Call the function bar(name='one', age=27) # Output: # name one # age 27
类似地,语法
def foo(x, y, *args): pass
允许函数 foo 接受任意数量的位置参数。这些参数被收集到一个名为 args 的元组中。
def foo(*args): for a in args: print(a) # Call the function foo(1) # Output: 1 foo(1, 2, 3) # Output: 1 # Output: 2 # Output: 3
*kwargs 和 args 可以一起使用允许固定参数和可变参数。例如:
def foo(kind, *args, bar=None, **kwargs): print(kind, args, bar, kwargs) # Call the function foo(123, 'a', 'b', apple='red') # Output: 123 ('a', 'b') None {'apple': 'red'}
* 符号也可用于在调用函数时解包参数列表。例如:
def foo(bar, lee): print(bar, lee) # Create a list baz = [1, 2] # Call the function using unpacking foo(*baz) # Output: 1 2
在 Python 3.8 及更高版本中,可以通过使用在函数定义中指定仅位置参数* 常规参数前的符号:
def func(arg1, arg2, arg3, *, kwarg1, kwarg2): pass
该函数只能接受三个位置参数,任何附加参数都必须传递作为关键字参数。
在 Python 3.6 及更高版本中,关键字参数的顺序保留在 kwargs 字典中。这在某些情况下很有用,例如当您需要维护传递给函数的参数的顺序时。
以上是*args 和 kwargs 在 Python 函数定义和调用中如何工作?的详细内容。更多信息请关注PHP中文网其他相关文章!