Heim >Backend-Entwicklung >Python-Tutorial >Detaillierte Einführung in Parameter in Python-Funktionen
Dieser Artikel bietet Ihnen eine detaillierte Einführung in die Parameter in Python-Funktionen. Ich hoffe, dass er für Freunde hilfreich ist.
Funktionen definieren
Funktionen in Python werden mit dem Schlüsselwort def definiert, im Format:
def 函数名(形参): 函数语句块
Funktionsnamen können nur Zeichenfolgen, Unterstriche und enthalten Zahlen und können nicht mit einer Zahl beginnen.
Die formalen Parameter der Funktion sind unterteilt in: Positionsparameter, Standardparameter (Parameter mit Standardwerten) und dynamische Parameter.
return ist ein Schlüsselwort, das verwendet wird, um das Ergebnis der Funktion zurückzugeben Wenn ein Fehler auftritt, wird die Funktion sofort beendet. Führen Sie dann andere Anweisungen aus Schreiben Sie nur Return und schreiben Sie später keinen anderen Inhalt. Die Funktion gibt None zurück.
def func(a,b): return a,b print(func(1,2)) #按照位置传入参数,1赋值给a,2赋值给b print(func(a=2,b=3))#按照关键字传入参数,指定a、b的值 print(func(3,b=6))#混合传入,此时注意,位置参数要在前面 #如果不指定实参会报错,因为函数中由位置参数,则调用函数时必须传入参数 #print(func())Ausgabe:
(1, 2) (2, 3) (3, 6)
Standardparameter
def func(): return 1,'asd',(1,'a',['hello','world']),[1,2,3] print('直接打印结果:',func()) a,b,c,d = func() print('a:',a) print('b:',b) print('c:',c) print('d:',d)
直接打印结果: (1, 'asd', (1, 'a', ['hello', 'world']), [1, 2, 3]) a: 1 b: asd c: (1, 'a', ['hello', 'world']) d: [1, 2, 3]
def func(name,age=20): print('{}已经{}岁啦'.format(name,age)) func('刘小姐')#默认参数可以不传,这时age值为默认的20 func('刘小姐',28)#默认参数传值时则覆盖默认值
Bei jedem Aufruf der Schleife wird a kein Wert zugewiesen, obwohl keine Parameter an a übergeben werden. Leere Liste [], da der Standardwert nur einmal zugewiesen wird, sodass die Ausgabe wie folgt aussieht:
刘小姐已经20岁啦 刘小姐已经28岁啦
Wenn Sie nicht möchten, dass sich der Standardwert bei nachfolgenden Aufrufen ansammelt, können Sie ihn wie folgt definieren Funktion: def func(a = []):
a.append('x')
return a
for i in range(6):
print(func())
['x']
['x', 'x']
['x', 'x', 'x']
['x', 'x', 'x', 'x']
['x', 'x', 'x', 'x', 'x']
['x', 'x', 'x', 'x', 'x', 'x']
Dynamische Parameter werden in zwei Typen unterteilt:
Einer wird durch *args dargestellt, die redundante Positionsparameter einheitlich empfangen, gespeichert in Form eines TupelsDas andere wird durch **kwargs dargestellt, das die redundanten Schlüsselwortparameter einheitlich empfängt und in Form eines Wörterbuchs speichert
Sehen wir uns zunächst ein Beispiel von *argsan
def func(a = None): if a is None: #如果a是None a = [] a.append('x') return a for i in range(6): print(func())Obwohl es nur 4 formale Parameter gibt, haben wir 10 übergeben und 4-10 werden von *args empfangen, um ein Tupel zu bilden
['x'] ['x'] ['x'] ['x'] ['x'] ['x']Werfen wir einen Blick auf **kwargs
def func(a,b,c,*args): print('*args内容为:',args) sum1 = 0 for i in args: sum1 += i sum1 = sum1 + a +b +c return sum1 print(func(1,2,3,4,5,6,7,8,9,10))
*args内容为: (4, 5, 6, 7, 8, 9, 10) 55
Da davon ausgegangen wird, dass die Standardparameter vor
args stehen, also func(a,b,c=20,args,
*kwargs), wird bei der Übergabe der Parameter der Wert angegeben Der formale Parameter c wird zuerst implementiert. Parameter 3 wird ein Wert zugewiesen (da die Position von 3 c entspricht, ist der Standardwert der Standardwert, wenn der Standardparameter nicht zugewiesen ist, und wenn er zugewiesen ist, wird der Standardwert überschrieben). Zu diesem Zeitpunkt ist c=3, aber c=20 erscheint später und es wird ein Fehler gemeldet. Da der formale Parameter c nicht zulässig ist, werden die Standardparameter nachargs geordnet Die Standardparameter müssen vor kwargs eingestuft werden, denn wenn sie später eingestuft werden, wird c=22 direkt von
kwargs empfangen, sodass die Standardparameter bedeutungslos sind. Dies ist nicht zulässig und ein FehlerDas Folgende ist eine weitere Möglichkeit, die Standardparameter vor *args einzuordnen. Obwohl diese Methode ebenfalls das gleiche Ergebnis liefert, müssen Sie bei der Position des Werts von besonders vorsichtig sein c beim Aufruf. Darüber hinaus macht diese Methode die Standardparameter bedeutungslos, da der Standardwert 20 nie verwendet wird. Daher ist es sinnvoll, die Standardparameter nach *args einzufügen.
def func(a,b,*args,c=20,**kwargs): print('*args内容为:',args) print(c) print('**kwargs内容为:',kwargs) sum1 = 0 for i in args: sum1 += i sum1 = sum1 + a +b +c for k in kwargs: sum1 += kwargs[k] return sum1 print(func(1,2,3,4,5,6,7,8,9,10,c=22,x=11,y=33,z=66))rrree
Eine schnelle Möglichkeit, dynamische Parameter zu übergeben
Für *args können Sie beim Übergeben von Parametern ein *-Zeichen vor lis hinzufügen und den Inhalt direkt übergeben*args内容为: (3, 4, 5, 6, 7, 8, 9, 10) 22 **kwargs内容为: {'x': 11, 'y': 33, 'z': 66} 187
def func(a,b,c=20,*args,**kwargs): print('*args内容为:',args) print(c) print('**kwargs内容为:',kwargs) sum1 = 0 for i in args: sum1 += i sum1 = sum1 + a +b +c for k in kwargs: sum1 += kwargs[k] return sum1 print(func(1,2,22,3,4,5,6,7,8,9,10,x=11,y=33,z=66))
*args内容为: (3, 4, 5, 6, 7, 8, 9, 10) 22 **kwargs内容为: {'x': 11, 'y': 33, 'z': 66} 187
def func(*args): return args lis = [1,2,{3,4,5},6,7,[8,9,0,1,23],34,5,(56,67),78,23] print(type(lis)) print(func(*lis))
Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in Parameter in Python-Funktionen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!