Sie werden in 100 Tagen Ingenieur - Tag 32 - Python - Grundlagen der Python-Sprache 7

Diese Zeit ist eine Fortsetzung der Grundlagen von Python.

Klicken Sie hier zum letzten Mal [Sie werden in 100 Tagen Ingenieur - Tag 31 - Python - Python-Übung 2] (https://qiita.com/otupy/items/8b7436e4df68c6c94fb1)

Funktion

Es tut mir leid, wenn es nicht angezeigt wird

Ich habe vor einiger Zeit über eingebaute Funktionen gesprochen, aber diesmal geht es um "Funktionen".

Die "eingebaute Funktion" ist eine eingebaute Funktion der Python-Sprache. Sie können die Funktion selbst definieren.

** So definieren Sie eine Funktion **

def Funktionsname(Streit):
return Rückgabewert

Der Begriff bezieht sich auf Funktionen, aber zuerst gibt es ein "Argument". Sie können es in die Klammer () der Funktion schreiben. Argumente werden verwendet, wenn Daten übergeben werden, die in einer Funktion verwendet werden können.

Als nächstes kommt der Rückgabewert, aber das in der Funktion berechnete Ergebnis Es wird verwendet, wenn Sie zur Außenseite der Funktion zurückkehren.

Definieren wir sofort eine Funktion.

#Funktionsdefinition
def abc(aaa=0):
    print(aaa)
    return 1

#Funktionsausführung
print(abc())
print(abc(2))

0 1 2 1

Wenn Sie einen Wert zuweisen, indem Sie nach dem Variablennamen "argument" "=" gleich hinzufügen, Wenn das "Argument" nicht angegeben ist, ist es der Wert, der als "Anfangswert" verwendet wird.

Da der Rückgabewert das Ergebnis der Ausführung der Funktion ist Es kann auch in einer Variablen gespeichert werden.

#Das Ausführungsergebnis der Funktion wird in einer Variablen gespeichert
a = abc(3)
print(a)

3 1

Rückgabewert und Argument können als Funktion ohne Einstellung definiert werden

def defg():
    print('dd')

defg()

dd

Es sei denn, Sie müssen den Wert zurückgeben Es ist in Ordnung, den "Rückgabewert" ohne den "Rückgabewert" zu entfernen.

Wenn Sie das Ergebnis der Funktion für die nächste Verarbeitung verwenden möchten Fügen Sie return hinzu, um den Wert zurückzugeben.

Sie können so viele Argumente haben, wie Sie möchten. Wenn es zu viel ist, ist es ein Problem bei der Verwendung.

Ich denke, es ist besser, es in ungefähr 5-6 Teile zu legen. Wenn es mehr wird, ist es besser, den Prozess zu überarbeiten.

Nachdem Sie das Argument beim Definieren der Funktion definiert haben, Bei der Verwendung muss nur das Argument angegeben werden. Abhängig von der Funktion besteht auch die Notwendigkeit, die Verarbeitung mit dem Argument zu ändern.

In diesem Fall fügen Sie dem Argument "**" hinzu Sie können das "Argument" als "Tapple-Typ" oder "Wörterbuch-Typ" erhalten.

def aaa1(**karg):
    print(karg)

#Übergeben Sie den Wörterbuchtyp als Funktionsargument
aaa1(aws=[1,2])

{'aws': [1, 2]}

Sie können Daten gleichzeitig an mehrere Argumente übergeben.

def aaa2(arg1, arg2, arg3):
    print(arg1)
    print(arg2)
    print(arg3)
    
lis = ['one', 'two', 'three']
#Übergeben Sie die Liste als Taple, um die Funktion auszuführen.
aaa2(*lis)

one two three

In diesem Fall muss es jedoch mit der Anzahl der Argumente übereinstimmen. Wenn die Zahlen nicht übereinstimmen, tritt ein Fehler auf.

lis2 = ['one', 'two', 'three','four']
#Ein Fehler tritt auf, wenn die Anzahl der Argumente und die Anzahl der übergebenen Argumente nicht übereinstimmen.
aaa2(*lis2)

TypeError: aaa2() takes 3 positional arguments but 4 were given

Informationen zur Verwendung der Funktion, die mehrere Zeilen umfasst Wenn es mehr als 2 Mal gemacht wird, ist es besser, es zu einer Funktion zu machen Der Code ist ordentlich und leicht zu sehen und leicht zu pflegen.

Wenn Sie denselben Prozess zweimal schreiben, überprüfen Sie das Ganze Mit dem Gefühl, die Teile neu zu schreiben, die "vereinfacht" und "arbeitssparend" sind Ich denke, es ist besser, eine "Funktion" zu erstellen.

Die "spezifische Funktion" wird auch als "Methode" unter einem anderen Namen gelesen. Denken Sie daran, da dies ein wesentliches Konzept für die Programmierung ist.

globale Variablen und Umfang

Es tut mir leid, wenn es nicht angezeigt wird

Das Konzept des "Geltungsbereichs" wird bei der Verwendung von "Funktionen" immer angehängt. Dies ist ein Konzept, das den "nutzbaren Bereich" der deklarierten Variablen angibt.

Es gibt zwei Arten von "Gültigkeitsbereich", "global" und "lokal".

Grob gesagt ist das äußerste "global" Das Innere des Funktionsblocks ist "lokal".

Mal sehen, den Unterschied. Bereiten Sie zunächst Variablen vor, die in "global" verwendet werden können.

global_var = 'global'

Definieren Sie als Nächstes eine Funktion und bereiten Sie Variablen vor, die darin verwendet werden können.

def local_def():
    #Variablen für local
    local_var = 'local'
    return local_var

Nennen wir beide Variablen. Aufruf von "globaler Variable"

print(global_var)

global

Aufruf der lokalen Variablen

print(local_var)

NameError Traceback (most recent call last) in () ----> 1 print(local_var) NameError: name 'local_var' is not defined

Wenn die Variable nicht definiert ist, wird eine Fehlermeldung angezeigt.

Was in "lokal" definiert ist, ist Dies liegt daran, dass es nur innerhalb des "Blocks" des "lokalen" verwendet werden kann.

Diese "lokale" Variable kann also verwendet werden Nur in der definierten Funktion.

Als nächstes spielen wir mit der Funktion und lesen die "globale Variable" in der Funktion.

def local_def():
    #Globale Variablenreferenz
    print(global_var)

local_def()

global

Die in "global" deklarierte "Variable" kann überall verwendet werden.

Was wurde in "lokal" deklariert Wie kann ich es in "global" verwenden?

Wenn es sich um eine Funktion handelt, als Rückgabewert Sie können es wiederverwenden, indem Sie zur "globalen" Seite zurückkehren.

def local_def():
    local_var = 'local'
    #Gibt lokal definierte Variablen zurück
    return local_var

g2 = local_def()
print(g2)

local

Schauen wir uns auch die for-Anweisung an.

global_var = 'g'

for i in range(5):
    j = global_var*i
    
#Lokale Variablen so wie sie sind drucken
print(i,j)```
4 gggg

 Das Ergebnis gibt nur das endgültig zugewiesene Ergebnis wieder.

 Die im Anweisungsblock "for" verwendete Variable usw.
 Ich denke, es kann Fälle geben, in denen es wiederverwendet wird, ohne es zu bemerken.
 Abhängig von dem in der "Variablen" gespeicherten Wert wird das Ergebnis des Programms stark beeinflusst.

 Was ist schließlich, wenn sich die Variablennamen in "global" und "lokal" überschneiden?

```python
sp = 'global'

def local_def():
    sp = 'local'
    print(sp)

local_def()
print(sp)

local global

Einmal in local mit demselben Variablennamen definiert Verwenden Sie beim Aufrufen einer Funktion den in dieser Funktion definierten Variablennamen. Da es überschrieben wird, wird der von local zugewiesene Wert angezeigt.

Dann beim Aufruf der "globalen" Variablen Der Mechanismus besteht darin, dass der ursprüngliche Wert angezeigt wird.

Wenn Sie das "reservierte Wort" "global" verwenden, Sie können diese "globale Variable" auf der "lokalen" Seite bearbeiten.

sp = 'global'

def local_def():
    #Lokal als globale Variable definiert
    global sp 
    sp= 'local'
    print(sp)

local_def()
print(sp)

local local

Deklarieren Sie die Variable mit "global" davor in "local". Sie können es dann einer Variablen zuweisen, um die globale Variable zu bearbeiten.

Wenn Sie dieselbe "Variable" für "global" und "lokal" verwenden, Es ist leicht, versehentliche Fehler zu verursachen.

Bis Sie sich daran gewöhnt haben, sollten Sie den Variablennamen nicht so weit wie möglich behandeln. Wir empfehlen Ihnen, einen Namen zu verwenden.

Anonyme Funktion

Es tut mir leid, wenn es nicht angezeigt wird

Bisher habe ich über "Funktionen" unterrichtet, Diesmal geht es um eine "anonyme Funktion".

Ich habe die Sortierzeiten ein wenig berührt Lambda Über Lambda. Auch als "Lambda-Ausdruck" bezeichnet, können Sie eine "unbenannte Funktion" erstellen.

** Wie schreibe ich Lambda-Stil **

Lambda-Argument: Verarbeitung

Wenn Sie eine normale Funktion schreiben

def add (a,b):
    return a+b
print(add(2,3))

5

Es sieht aus wie das Wenn es sich um eine anonyme Funktion handelt, die Lambda verwendet

add = lambda a,b : a+b
print(add(2,3))

5

Die nach "Lambda" geschriebene Variable wird empfangen und die Verarbeitung nach ":" wird ausgeführt.

Weisen Sie der Variablen add mit Lambda-Ausdruck eine Funktion zu Es ist ein Mechanismus, mit dem die Funktion ausgeführt wird, wenn die Variable verwendet wird

Es gibt fast keinen Unterschied zu einer normalen Funktion, und es ist sicherer, die Funktion zu definieren.

Der "Lambda-Ausdruck" ist zu Zeiten wie "Sortieren" wirksam.

Dieser "Lambda-Ausdruck" kam beim "Sortieren" mit einem "Wörterbuchtypwert" heraus.

dct ={ 3:7 , 5:6 ,1:3 }
#Sortieren Sie den Wörterbuchtyp nach Wert in aufsteigender Reihenfolge.
print(sorted(dct.items(), key=lambda x:x[1]))

[(1, 3), (5, 6), (3, 7)]

Nach key = steht Lambda-Ausdruck. Das "sortierte" Funktionsargument "key" kann die Funktion empfangen.

Der "Lambda-Ausdruck" ist nützlich für die komplexe Sortierung.

lis1 = [2,3,4,5,7]
#Beim Sortieren von Elementen nach dem Rest geteilt durch 3
print(sorted(lis1 , key=lambda x:x%3))

[3, 4, 7, 2, 5]

Im Fall eines Wörterbuchtyps werden "Schlüssel" und "Wert" als "Tuppeltyp" zurückgegeben.

dct ={ 3:7 , 5:6 ,1:3 }
print(sorted(dct.items(), key=lambda x:x[1]))

[(1, 3), (5, 6), (3, 7)]

Im Indexteil von key = lambda x: x [1] [0] ist der Schlüssel und [1] ist der Wert.

Wenn Sie nach Wert sortieren möchten, Im "Lambda-Ausdruck" ist es der zweite Index, dh "1". Sie würden key = lambda x: x [1] angeben.

Dies ist nützlich zum Sortieren komplexer Daten usw.

#Definieren Sie mehrere Listen
complex_list = [[1,2,3],[3,5,2],[2,6,8]]
print(complex_list)

[[1, 2, 3], [3, 5, 2], [2, 6, 8]]

#Sortieren Sie nach dem ersten Wert in der Liste
print(sorted(complex_list,key=lambda x : x[0]))

#Sortieren Sie nach dem zweiten Wert in der Liste
print(sorted(complex_list,key=lambda x : x[1]))

#Sortieren Sie nach dem dritten Wert in der Liste
print(sorted(complex_list,key=lambda x : x[2]))

[[1, 2, 3], [2, 6, 8], [3, 5, 2]] [[1, 2, 3], [3, 5, 2], [2, 6, 8]] [[3, 5, 2], [1, 2, 3], [2, 6, 8]]

Der Schlüssel zum Sortieren der Liste, die als Element der großen "Liste" vorhanden ist Sie kann für jedes Element in der Liste definiert werden.

Auf diese Weise können alle Arten von Daten verarbeitet werden. Der "Lambda-Ausdruck" ist sehr nützlich.

Es eignet sich für kleine Verarbeitungen, bei denen keine Funktion definiert werden muss. Denken Sie daran, wie Sie es in Funktionen und Sortierungen verwenden.

Zusammenfassung

Funktionen sind eine sehr nützliche Funktion zur Vereinfachung und Organisation Ihrer Arbeit.

Definieren von Funktionen und Behandeln von Variablen im Gültigkeitsbereich Behalten Sie den Überblick und versuchen Sie, Fehler zu vermeiden.

68 Tage, bis Sie Ingenieur werden

Informationen zum Autor

HP von Otsu py: http://www.otupy.net/

Youtube: https://www.youtube.com/channel/UCaT7xpeq8n1G_HcJKKSOXMw

Twitter: https://twitter.com/otupython

Recommended Posts

Sie werden in 100 Tagen Ingenieur - Tag 33 - Python - Grundlagen der Python-Sprache 8
Sie werden in 100 Tagen Ingenieur - 26. Tag - Python - Grundlagen der Python-Sprache 3
Sie werden in 100 Tagen Ingenieur - Tag 32 - Python - Grundlagen der Python-Sprache 7
Sie werden in 100 Tagen Ingenieur - 28. Tag - Python - Grundlagen der Python-Sprache 4
Sie werden in 100 Tagen Ingenieur. ――Tag 24 ―― Python ―― Grundlagen der Python-Sprache 1
Sie werden in 100 Tagen Ingenieur. ――Tag 30 ―― Python ―― Grundlagen der Python-Sprache 6
Sie werden in 100 Tagen Ingenieur. ――Tag 25 ―― Python ―― Grundlagen der Python-Sprache 2
Sie werden in 100 Tagen Ingenieur - 27. Tag - Python - Python-Übung 1
Sie werden in 100 Tagen Ingenieur - Tag 34 - Python - Python-Übung 3
Sie werden in 100 Tagen Ingenieur - 31. Tag - Python - Python-Übung 2
Sie werden in 100 Tagen Ingenieur - Tag 63 - Programmierung - Wahrscheinlichkeit 1
Sie werden in 100 Tagen Ingenieur. ――Tag 65 ――Programmieren ――Über Wahrscheinlichkeit 3
Sie werden in 100 Tagen Ingenieur. ――Tag 64 ――Programmieren ――Über Wahrscheinlichkeit 2
Sie werden in 100 Tagen Ingenieur - Tag 35 - Python - Was Sie mit Python tun können
Sie werden in 100 Tagen Ingenieur - Tag 86 - Datenbank - Über Hadoop
In 100 Tagen sind Sie Ingenieur. ――Tag 71 ――Programmieren ――Über das Schaben 2
In 100 Tagen sind Sie Ingenieur. ――Tag 61 ――Programmieren ――Über Erkundung
In 100 Tagen sind Sie Ingenieur. ――Tag 74 ――Programmieren ――Über das Schaben 5
In 100 Tagen sind Sie Ingenieur. ――Tag 73 ――Programmieren ――Über das Schaben 4
In 100 Tagen sind Sie Ingenieur. ――Tag 75 ――Programmieren ――Über das Schaben 6
In 100 Tagen sind Sie Ingenieur. ――Tag 68 ――Programmieren ――Über TF-IDF
In 100 Tagen sind Sie Ingenieur. ――Tag 70 ――Programmieren ――Über das Schaben
In 100 Tagen sind Sie Ingenieur. ――Tag 81 ――Programmieren ――Über maschinelles Lernen 6
In 100 Tagen sind Sie Ingenieur. ――Tag 82 ――Programmieren ――Über maschinelles Lernen 7
In 100 Tagen sind Sie Ingenieur. ――Tag 79 ――Programmieren ――Über maschinelles Lernen 4
In 100 Tagen sind Sie Ingenieur. ――Tag 80 ――Programmieren ――Über maschinelles Lernen 5
In 100 Tagen sind Sie Ingenieur. ――Tag 78 ――Programmieren ――Über maschinelles Lernen 3
Sie werden in 100 Tagen Ingenieur. ――Tag 84 ――Programmieren ――Über maschinelles Lernen 9
In 100 Tagen sind Sie Ingenieur. ――Tag 83 ――Programmieren ――Über maschinelles Lernen 8
In 100 Tagen sind Sie Ingenieur. ――Tag 77 ――Programmieren ――Über maschinelles Lernen 2
In 100 Tagen sind Sie Ingenieur. ――Tag 85 ――Programmieren ――Über maschinelles Lernen 10
In 100 Tagen sind Sie Ingenieur. ――Tag 60 ――Programmieren ――Über Datenstruktur und Sortieralgorithmus
Sie werden in 100 Tagen Ingenieur. ――Tag 66 ――Programmieren ――Über die Verarbeitung natürlicher Sprache
Grundlagen zum Ausführen von NoxPlayer in Python
Sie werden in 100 Tagen Ingenieur. ――Tag 67 ――Programmieren ――Über morphologische Analyse
Wie viel kennen Sie die Grundlagen von Python?
Überprüfung der Grundlagen von Python (FizzBuzz)
Informationen zur Grundlagenliste der Python-Grundlagen
Lernen Sie die Grundlagen von Python ① Grundlegende Anfänger
Wird der Tag kommen, an dem Python einen Ausnahme-Ausdruck haben kann?
Für Python-Anfänger. Sie können verwirrt sein, wenn Sie den allgemeinen Begriff für die Programmiersprachen-Sammlung nicht kennen.
[Basic Information Engineer Examination] Ich habe einen Algorithmus für den Maximalwert eines Arrays in Python geschrieben.
Wenn Sie einen Singleton in Python möchten, stellen Sie sich das Modul als Singleton vor
Die Geschichte eines Fehlers in PyOCR
Python Hinweis: Wenn Sie die Attribute eines Objekts kennen möchten
Werden Sie bald KI-Ingenieur! Lernen Sie in wenigen Tagen umfassend Python / KI / Maschinelles Lernen / Deep Learning / Statistische Analyse!
Ich kannte die Grundlagen von Python nicht
Das Ergebnis der Installation von Python auf Anaconda
Öffnen Sie eine Excel-Datei in Python und färben Sie die Karte von Japan
Auf der Suche nach dem schnellsten FizzBuzz in Python
Holen Sie sich zu jeder Tageszeit eine Datums- / Uhrzeitinstanz in Python
Ein Beispiel für die Antwort auf die Referenzfrage der Studiensitzung. Mit Python.
[Python3] Grundlegendes zu Dateivorgängen
Eine Geschichte über einen Ingenieur, der das Emo der Kryptographie bemerkt hat und versucht, es in Python zu implementieren
[Python3] Code, der verwendet werden kann, wenn Sie die Erweiterung eines Bildes sofort ändern möchten
Wenn Sie sudo in Ubuntu hinzufügen, wird es als Standardpython bezeichnet.
[Basic Information Engineer Examination] Ich habe den Algorithmus der euklidischen Methode der gegenseitigen Teilung in Python geschrieben.
Sie können die Methode der Klasse direkt in Python3 aufrufen, ohne @staticmethod hinzuzufügen
Wenn Sie View decorator in urls.py in Django schreiben, ist die Liste höher.