[Empfohlene Sammlung] Python Basic Tutorial: Kapitel 7_ Erweiterte Funktionen

 Original: Gespräch über öffentliche Kontodaten

https://mp.weixin.qq.com/s/Ym1Sii3ZCIfNZaQvl3FJUg

Dies ist eine Reihe von Tutorials zu den Grundlagen von Python. Schüler, die es gewohnt sind, Videos anzusehen, können sich dieses kostenlose Tutorial ansehen:

https://www.bilibili.com/video/BV1ZK411Q7uX/?vd_source=704fe2a34559a0ef859c3225a1fb1b42&wxfid=o7omF0RELrnx5_fUSp6D59_9ms3Y

Funktion mit mehreren Rückgabewerten

Lernziel

  • Erfahren Sie, wie Funktionen mehrere Rückgabewerte zurückgeben

Als nächstes denken wir über eine Frage nach: Wenn wir wie unten gezeigt zwei Rückgaben in eine Funktion schreiben, wie wird unser Programm ausgeführt?

Frage: Wie wird das Programm ausgeführt, wenn eine Funktion zwei Rückgaben hat (wie unten gezeigt)?

 
 
 
 

def return_num():
return 1
return 2

result = return_num()
print(result) # 1

Wenn wir diese Funktion aufrufen und ihren Rückgabewert erhalten, muss der Rückgabewert 1 statt 2 sein.

Return bedeutet, das Ergebnis der Funktion zurückzugeben. Nach der Ausführung der Rückgabe wird die folgende Anweisung nicht erneut ausgeführt, dh unsere zweite Rückgabe, die überhaupt nicht ausgeführt wird. Unser Ergebnis ist also 1.

Jetzt habe ich ein Problem: Sie erlauben mir nicht, zwei Rückgabewerte zu schreiben, sondern ich möchte nur zwei Rückgabewerte oder mehrere Rückgabewerte zurückgeben.

Gibt es eine Syntax, die geschrieben werden kann? Das ist auf jeden Fall möglich. Wenn eine Funktion mehrere Rückgabewerte zurückgeben muss, kann unsere Schreibmethode wie im Code in der Abbildung dargestellt aussehen:

mehrere Rückgabewerte


Wie schreibe ich Code, wenn eine Funktion mehrere Rückgabewerte hat?

 
 
 
 

def test_return():
return 1,2

x,y = test_return()

print(x) # Ergebnis 1
print(y) # Ergebnis 2

Schreiben Sie entsprechend der Reihenfolge der Rückgabewerte einfach mehrere Variablen in der entsprechenden Reihenfolge, um sie zu empfangen. Die Variablen werden durch Kommas getrennt und verschiedene Arten der Datenrückgabe werden unterstützt. Darüber hinaus sind unsere Typen tatsächlich unbegrenzt, und wir tun dies nicht Nicht, dass Sie nur alle zurückgeben können. Für denselben Typ können Sie für den ersten einen numerischen Typ, für den zweiten einen String-Typ und für den dritten einen Bool-Typ zurückgeben. Die Typen sind unbegrenzt.

Mehrere Möglichkeiten, Parameter an Funktionen zu übergeben

Lernziel

  • Master-Positionsparameter

  • Schlüsselwortargumente beherrschen

  • Master-Parameter mit variabler Länge

  • Beherrschen Sie die Standardparameter

Funktionsparametertyp

Verschiedene Verwendungsmethoden, die Funktion verfügt über 4 gemeinsame Parameterverwendungsmethoden:

  • Positionsparameter

  • Schlüsselwortargumente

  • Standardparameter

  • Parameter variabler Länge

Die Funktionen, die wir zuvor gelernt haben, unterstützen eingehende Parameter. Ebenso gibt es vier verschiedene Möglichkeiten, unsere eingehenden Parameter zu verwenden. Dabei handelt es sich um Positionsparameter, Schlüsselwortparameter, Standardlängen und variable Längen. Werfen wir einen Blick auf die einzelnen Verwendungsformen:

Positionsparameter

Positionsparameter: Beim Aufruf einer Funktion werden Parameter entsprechend der durch die Funktion definierten Parameterposition übergeben.

Dann ist diese Form tatsächlich die Form, die wir beim Lernen von Funktionen verwendet haben. Der folgende Code übergibt beispielsweise 3 Parameter. Wenn wir ihn also aufrufen, können wir sie entsprechend der Position der Parameter einzeln schreiben: TOM gibt beispielsweise den formalen Parameter des Namens an und 20 gibt den formalen Parameter von an Alter, männlich Es bezieht sich auf den formalen Parameter des Geschlechts, es handelt sich also um einen Positionsparameter. Bestimmen Sie anhand der Position des von Ihnen übergebenen Parameters, welchen Parameter Sie übergeben. 

 
 
 
 

def user_info(name,age,gender):
print(f'Dein Name ist {name}, Alter ist {age}, Geschlecht ist {gender}')
user_info('T0M',20,'Male')

Hinweis: Die Reihenfolge und Anzahl der übergebenen Parameter und definierten Parameter müssen konsistent sein

Schlüsselwortargumente

Schlüsselwortparameter: Parameter werden beim Aufruf der Funktion in der Form „key=value“ übergeben.

Funktion: Es kann die Funktion klarer und benutzerfreundlicher machen und auch die Reihenfolgeanforderungen der Parameter klären.

 
 
 
 

def user_info(name,age,gender):
print(f"Ihr Name ist: {name}, Alter ist: {age}, Geschlecht ist: {gender}") #Keyword
übergeben Parameter
user_info(name="Xiao Ming" , age=20,gender="Male")
#Kann der festen Reihenfolge nicht folgen
user_info(age=20,gender="Male",name="Xiaoming")

#Kann mit Positionsparametern gemischt werden, die Positionsparameter müssen an erster Stelle stehen und match Parameter order
user_info("Xiaoming", age=20, gender="male")

Bei diesem Formular spielt unsere Reihenfolge also keine Rolle. Sie können anstelle einer festen Reihenfolge über den spezifischen formalen Parameternamen angeben, an wen ich diese Daten weitergeben möchte. Dies ist die Form von Schlüsselwortparametern, bei der die Form des Schlüssels gleich dem Wert verwendet wird. Das heißt, wenn wir Parameter übergeben, geben wir den Namen des formalen Parameters an und verwenden dann das Gleichheitszeichen, um auf den tatsächlichen Parameter zu verweisen. Das heißt, wir verwenden den formalen Sticky-Parameter als Schlüssel und den tatsächlichen Parameter als Wert und übergeben ihn in Form dieses Schlüssel-Wert-Paares.

Hinweis: Wenn die Funktion aufgerufen wird und Positionsparameter vorhanden sind, müssen die Positionsparameter vor den Schlüsselwortparametern stehen, es gibt jedoch keine Reihenfolge zwischen den Schlüsselwortparametern

Darüber hinaus können unsere Schlüsselwortargumente auch mit Positionsargumenten gemischt werden. Wie Sie sehen, definieren wir zunächst einen Parameter namens „Xiaoming“. Er hat den Schlüsselwert nicht angegeben, das heißt, er hat nicht angegeben, wer sein formaler Parameter ist. Diese Form ist ein Positionsparameter. Der Positionsparameter gibt an, dass „Xiaoming“ für „Name“ stehen muss, da wir in der Reihenfolge übereinstimmen. Daher steht „Xiao Ming“ für „Name“. Später haben wir Schlüsselwörter verwendet, um Parameter zu übergeben. Das Alter ist gleich 20, das Geschlecht ist gleich männlich, sodass sie gemischt werden können. Es muss jedoch beachtet werden, dass wir beim Mischen von Positionsparametern und Schlüsselwortparametern die Positionsparameter an die Spitze setzen müssen. Wenn Sie sie danach einfügen, handelt es sich um einen Syntaxfehler. 

Standardparameter

Standardparameter: Standardparameter werden auch als Standardparameter bezeichnet, mit denen Funktionen definiert und Standardwerte für Parameter bereitgestellt werden. Beim Aufrufen von Funktionen darf der Wert der Standardparameter nicht übergeben werden (Hinweis: Alle Positionsparameter müssen vor dem Standard erscheinen Parameter, einschließlich Funktionsdefinitionen und Übertragung).

Funktion: Beim Aufruf einer Funktion ohne Übergabe von Parametern wird der dem Standardparameter entsprechende Standardwert verwendet.

Sie können beispielsweise sehen, dass in unserer Funktion namens user_info das Geschlecht des dritten Parameters standardmäßig einem Mann zugewiesen wird. Diese Schreibweise bedeutet also, dass der Wert des Geschlechts männlich ist, wenn Sie den Inhalt nicht an Geschlecht übergeben. Aber wenn Sie es übergeben, verwende ich es entsprechend dem von Ihnen übergebenen Wert. Dies wird als Standardparameter oder als Standardparameter bezeichnet. 

 
 
 
 

def user_info(name,age,gender='Male'):
print(f'Dein Name ist {name}, Alter ist {age}, Geschlecht ist {gender}')

user_info('TOM',20)
user_info(' Rose ',18,'Weiblich')

Hinweis: Wenn die Funktion aufgerufen wird und der Standardparameterwert übergeben wird, wird der Standardparameterwert geändert, andernfalls wird der Standardwert verwendet

Ausgabeergebnis:

 
 
 
 

Ihr Name ist Tom, Ihr Alter ist 20, Ihr Geschlecht ist männlich.
Ihr Name ist Rose, Sie sind 18 Jahre alt, Ihr Geschlecht ist weiblich

Parameter variabler Länge

Parameter mit unbestimmter Länge: Parameter mit unbestimmter Länge werden auch als variable Parameter bezeichnet. Sie werden in Situationen verwendet, in denen unsicher ist, wie viele Parameter beim Aufruf übergeben werden (es ist auch möglich, keine Parameter zu übergeben).

Funktion: Wenn die Anzahl der Parameter beim Aufruf einer Funktion unsicher ist, können Sie Parameter variabler Länge verwenden

Arten von Parametern unbestimmter Länge:

① Positionsübertragung

② Schlüsselwortübertragung

Standortübertragung

Dann bezieht sich die unbestimmte Länge auf die Anzahl unserer Parameter, die eine beliebige Zahl sein kann. Dann verwendet die unbestimmte Länge der Positionsübertragung ein Schlüsselwort namens Sternchen, durch das wir unseren formalen Parameter namens args angeben können. Die Anzahl der empfangenen Parameter ist unbegrenzt, Sie können 0 angeben, Sie können auch 10 angeben, Sie können so viele angeben, wie Sie möchten. Dann kann es zu diesem Zeitpunkt zu Zweifeln kommen, meine Nummer ist nicht begrenzt, wie erhalten Sie sie? Dann müssen wir hier den Datencontainer einladen, den wir zuvor gelernt haben.

Wenn wir die Übertragung variabler Länge verwenden, werden die formalen Parameter args standardmäßig als Tupeltyp markiert. Wir wissen, dass ein Tupel mehrere Elemente speichern kann. Da es sich um einen Datencontainer dieses Typs handelt, kann erklärt werden, dass viele davon Unsere Parameter werden alle im Tupel gespeichert, und dies wird als Form der Positionsübertragung bezeichnet. 

 
 
 
 

def user_info(*args):
print(args)

# ('TOM',)
user_info('TOM')
# (T0M',18)
user_info('TOM',18)

Ausgabeergebnis:

 
 
 
 

('TOM',)
('TOM', 18)

Notiz:

Alle übergebenen Parameter werden von der Variablen args erfasst und entsprechend der Position der übergebenen Parameter zu einem Tupel kombiniert. args ist ein Tupeltyp, bei dem es sich um eine Positionsübergabe handelt

Schlüsselwortübergabe

Zusätzlich zur unbestimmten Länge der Positionsübergabe gibt es auch eine unbestimmte Länge, die als Schlüsselwortübergabe bezeichnet wird. Es verwendet zwei Sternchen, um anzuzeigen, dass die Anzahl ebenfalls unbegrenzt ist. Gleichzeitig muss sein Inhalt der Form von Schlüssel-Wert-Paaren genügen, wobei k gleich dem Wert ist. Mit anderen Worten, unser formaler Parameter namens kwargs ist ein Wörterbuch, das wir zuvor gelernt haben. Wenn wir die Funktion aufrufen, müssen wir sie nur als Wörterbuch übergeben.

 
 
 
 

def user_info(**kwargs):
print(kwargs)
# {'name':'T0M','age':18,'id':110}
user_info(name='TOM',age=18,id=110)

Ausgabeergebnis:

 
 
 
 

{'name': 'TOM', 'age': 18, 'id': 110}

Wir übergeben dieses Stück an einer Position mit unbestimmter Länge. Es gibt standardmäßig eine Spezifikation. Wir nennen es Kwargs. Es handelt sich nicht um eine zwingende Anforderung, sondern um eine Spezifikationsanforderung. Hinweis: Wenn der Parameter die Form „Schlüssel = Wert“ hat, werden alle „Schlüssel = Wert“ von kwargs akzeptiert und ein Wörterbuch wird entsprechend „Schlüssel = Wert“ erstellt.

Funktion als Parameter übergeben

Lernziel

  • Beherrschung der Funktionsübergabe als Parameter

Beim vorherigen Funktionslernen akzeptieren alle Funktionen, die wir verwendet haben, Daten als Parameter:

  • Nummer

  • Zeichenfolge

  • Wörterbücher, Listen, Tupel usw.

Tatsächlich kann die Funktion, die wir gelernt haben, auch als Parameter an eine andere Funktion übergeben werden.

Der folgende Code:

 
 
 
 

def test_func(compute):
Ergebnis = Compute(1,2)
print(Ergebnis)
def Compute(x,y):
return x + y
test_func(compute) # Funktion:3
 

 
 

def test_func(compute):
Ergebnis = Compute(1,2)
print(Ergebnis)
def Compute(x,y):
return x*y
test_func(compute) # Funktion:2
 

 
 

def test_func(compute):
Ergebnis = Compute(1,2)
print(Ergebnis)
def Compute(x,y):
return xy

test_func(compute) # Zeichen: -1

Die Funktion „compute“ wird als Parameter zur Verwendung an die Funktion „test_func“ übergeben.

  • test_func benötigt eine Funktion, die als Parameter übergeben wird. Diese Funktion muss 2 Zahlen zur Berechnung empfangen. Die Berechnungslogik wird durch die übergebene Funktion bestimmt.

  • Die Berechnungsfunktion empfängt zwei Zahlen, um sie zu berechnen, und die Berechnungsfunktion wird als Parameter zur Verwendung an die Funktion test_func übergeben

  • Schließlich schließt innerhalb der Funktion test_func die übergebene Berechnungsfunktion die Berechnung von Zahlen ab. Daher handelt es sich hierbei um eine Übertragung der Berechnungslogik und nicht um eine Datenübertragung.

Genau wie im obigen Code können nicht nur Additionen, sondern auch beliebige Logiken wie Treffen, Teilen usw. selbst definiert und als Funktion übergeben werden.

Anonyme Lambda-Funktion

Lernziel  

  • Beherrschen Sie die Syntax anonymer Lambda-Funktionen

Wir haben bereits zuvor gelernt, wie man Funktionen mit dem Schlüsselwort def definiert. Die auf diese Weise definierten Funktionen haben Namen. Definieren Sie beispielsweise eine Funktion mit dem Namen add, wobei add der Name der Funktion ist. Darüber hinaus gibt es eine andere Syntax zum Definieren von Funktionen über das Schlüsselwort Lambda.

Verwenden Sie das Schlüsselwort Lambda, um eine anonyme Funktion ohne Namen zu definieren.

in der Definition der Funktion

  • Mit dem Schlüsselwort def können Sie eine Funktion mit einem Namen definieren

  • Lambda-Schlüsselwort: Sie können eine anonyme Funktion definieren (kein Name).

Was ist der Unterschied zwischen benannten und unbenannten Funktionen?

  • Eine benannte Funktion, die basierend auf dem Namen wiederverwendet werden kann.

  • Eine anonyme Funktion ohne Namen, die nur einmal vorübergehend verwendet werden kann.

Syntax der anonymen Funktionsdefinition:

 
 
 
 

Eingehende Lambda-Parameter: Funktionskörper (eine Codezeile)

  • Lambda ist ein Schlüsselwort, das bedeutet, eine anonyme Funktion zu definieren

  • Der eingehende Parameter stellt den formalen Parameter der anonymen Funktion dar, z. B.: x, y bedeutet den Empfang von 2 formalen Parametern

  • Der Funktionskörper stellt die Ausführungslogik der Funktion dar. Hinweis: Es kann nur eine Zeile geschrieben werden, und es können nicht mehrere Codezeilen geschrieben werden

Mit dem folgenden Code können wir:

  • Definieren Sie mit dem Schlüsselwort def eine Funktion und übergeben Sie Folgendes:

 
 
 
 

def test_func(compute):
Ergebnis = Compute(1,2)
print(Ergebnis)

def Compute(x,y):
return x+y

test_func(compute) # Funktion:3

  • Sie können auch eine einmalige anonyme Lambda-Funktion über das Schlüsselwort lambda übergeben

 
 
 
 

def test_func(compute):
result = compute(1,2)
print(result)
test_func(lambda x,y:x +y) # Zeichensatz:3

Ist die Verwendung von Lambda nicht sehr prägnant? Dies ist auch ein spezifisches Anwendungsszenario von Lambda, weil es sehr prägnant und sehr cool ist!

 

おすすめ

転載: blog.csdn.net/Blue92120/article/details/130618193