Pythons Funktionsdefinition ist sehr einfach, aber seine Flexibilität ist sehr groß. Zusätzlich zu den normalerweise definierten erforderlichen Parametern können Sie auch Standardparameter, variable Parameter und Schlüsselwortparameter verwenden, sodass die durch die Funktion definierte Schnittstelle nicht nur komplexe Parameter verarbeiten kann, sondern auch den Code des Aufrufers vereinfacht.
In Python-Funktionen können Sie auch variable Parameter definieren. Wie der Name schon sagt, bedeuten variable Parameter, dass die Anzahl der übergebenen Parameter variabel ist. Sie kann 1, 2 oder eine beliebige Zahl oder 0 sein.
Fall: Bitte berechnen Sie a2 + b2 +.c2 + ….
Nehmen Sie als Beispiel ein mathematisches Problem mit einer gegebenen Menge von Zahlen a, b, c...,
Um diese Funktion zu definieren, müssen die Eingabeparameter ermittelt werden. Da die Anzahl der Parameter ungewiss ist, dachte ich zunächst, dass a, b, c... als Liste oder Tupel übergeben werden könnten.
Die Funktion kann wie folgt definiert werden:
def calc(numbers): sum = 0 for n in numbers: sum = sum + n * n return sum
Aber beim Aufruf müssen Sie zuerst eine Liste oder ein Tupel zusammenstellen:
print(calc([1, 2, 3])) #结果:14 print(calc((1, 3, 5, 7)) #结果:84
Code vereinfacht
Wenn variable Parameter verwendet werden, kann der Aufruf einer Funktion folgendermaßen vereinfacht werden:
Ändern Sie also die Parameter der Funktion in variable Parameter:
def calc(*numbers): sum = 0 for n in numbers: sum = sum + n * n return sum
Verglichen mit der Definition eines Listen- oder Tupelparameters Um variable Parameter zu definieren, fügen Sie einfach ein *-Zeichen vor dem Parameter hinzu.
Innerhalb der Funktion erhalten die Parameternummern ein Tupel, sodass der Funktionscode völlig unverändert bleibt. Beim Aufruf dieser Funktion können Sie jedoch eine beliebige Anzahl von Parametern übergeben, einschließlich 0 Parametern:
print(calc(1, 2)) #结果:5 print(calc()) #结果:0
Was ist, wenn bereits eine Liste oder ein Tupel vorhanden ist und Sie einen variablen Parameter aufrufen möchten?
例:
nums = [1, 2, 3] print(calc(nums[0], nums[1], nums[2]))
这种写法当然是可行的,问题是太繁琐。
所以Python允许在list或tuple前面加一个*号,把list或tuple的元素变成可变参数传进去:
nums = [1, 2, 3] calc(*nums)
*nums表示把nums这个list的所有元素作为可变参数传进去。这种写法相当有用,而且很常见。
可变参数允许传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple。
而关键字参数允许传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。请看示例:
def person(name, age, **kw): print('name:', name, 'age:', age, 'other:', kw)
函数person除了必选参数name和age外,还接受关键字参数kw。在调用该函数时,可以只传入必选参数:
person('Michael', 30)
运行结果:
也可以传入任意个数的关键字参数:
extra = {'city': 'Beijing', 'job': 'Engineer'} person('Jack', 24, **extra)
关键字参数有什么用?
它可以扩展函数的功能。
比如,在person函数里,保证能接收到name和age这两个参数,但是,如果调用者愿意提供更多的参数,也能收到。
试想正在做一个用户注册的功能,除了用户名和年龄是必填项外,其他都是可选项,利用关键字参数来定义这个函数就能满足注册的需求。
extra表示把extra这个dict的所有key-value用关键字参数传入到函数的**kw参数,kw将获得一个dict,注意kw获得的dict是extra的一份拷贝,对kw的改动不会影响到函数外的extra。
Dieser Artikel basiert auf den Grundlagen von Python und stellt die Parameter von Python-Funktionen vor. Die Funktionen von Python verfügen über eine sehr flexible Parameterform, die nicht nur einfache Aufrufe implementieren, sondern auch sehr komplexe Parameter übergeben kann. Es werden allgemeine Variablenparameter und Schlüsselwortparameter eingeführt.
Das obige ist der detaillierte Inhalt vonEine kurze Analyse der Parameter von Python-Funktionen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!