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中文網其他相關文章!