[Einführung in Data Scientists] Grundlagen von Python ♬ Funktionen und Klassen

In Anlehnung an die Python-Grundlagen von gestern Abend [Funktionen und anonyme Funktionen usw. (https://qiita.com/MuAuan/items/fe594b794fcf75ae3abe) werden wir über Funktionen und Klassen sprechen. 【Hinweis】 ["Data Scientist Training Course an der Universität von Tokio"](https://www.amazon.co.jp/%E6%9D%B1%E4%BA%AC%E5%A4%A7%E5%AD%A6%E3 % 81% AE% E3% 83% 87% E3% 83% BC% E3% 82% BF% E3% 82% B5% E3% 82% A4% E3% 82% A8% E3% 83% B3% E3% 83 % 86% E3% 82% A3% E3% 82% B9% E3% 83% 88% E8% 82% B2% E6% 88% 90% E8% AC% 9B% E5% BA% A7-Python% E3% 81 % A7% E6% 89% 8B% E3% 82% 92% E5% 8B% 95% E3% 81% 8B% E3% 81% 97% E3% 81% A6% E5% AD% A6% E3% 81% B6 % E3% 83% 87% E2% 80% 95% E3% 82% BF% E5% 88% 86% E6% 9E% 90-% E5% A1% 9A% E6% 9C% AC% E9% 82% A6% Ich werde E5% B0% 8A / dp / 4839965250 / ref = tmm_pap_swatch_0? _ Encoding = UTF8 & qid = & sr =) lesen und die Teile zusammenfassen, an denen ich einige Zweifel habe oder die ich nützlich finde. Daher denke ich, dass die Zusammenfassung unkompliziert sein wird, aber bitte lesen Sie sie, da der Inhalt nichts mit diesem Buch zu tun hat.

Vorwärtsschwung

Dieses Kapitel konzentriert sich auf den Mechanismus von Python-Funktionsaufrufen und die Unterschiede zwischen Klassennotation und Funktionen. Informationen zum Funktionsaufruf finden Sie im Folgenden. 【Referenz】 Modulfunktionsaufruf @PyQ

Kapitel 1-2 Python-Grundlagen

1-2-6 Klasse und Instanz

Erstellen Sie eine Instanz aus der Klasse. Wir werden dieses Buch ein wenig verlassen, um die Ähnlichkeiten zwischen Funktionsaufrufen, Klassendeklarationen und Instanzausführung zu zeigen.

Funktionsaufruf

Funktionen werden manchmal in einem PG verwendet, aber wenn versucht wird, ein kompliziertes PG zu schreiben, werden die Funktionen gespeichert und in einer paketartigen Struktur mit einer strukturierten Verzeichnisstruktur verwendet. In diesem Fall hat Python einen wichtigen Mechanismus. Das heißt, wenn Sie den folgenden Code mit > python calc_add.py ausführen, funktioniert er in der folgenden Reihenfolge. ① Es werden zwei Funktionsdefinitionen vorgenommen ② Der Modulname calc_add wird __name__ zugewiesen ③ Die Anweisung print wird ausgeführt ④ Die if-Anweisung ist True, und die folgenden zwei print-Anweisungen werden ausgeführt.

calc_add.py


def calc_add(a, b):
    return a + b
    
def calc_multi(a, b):
    return a * b
       
print('__name__:', __name__)

if __name__ == '__main__':        
    print(calc_add(5,3))
    print(calc_multi(5, 3))

Ergebnis

__name__: __main__
8
15

Führen Sie einen anderen Code main.py aus

Führen Sie in diesem Fall > python main.py aus (1) Lesen Sie die beiden Funktionen calc_add und calc_multi aus calc_add.py mit der ersten Deklarationsanweisung. Zu diesem Zeitpunkt wird, wie Sie aus der Ausgabe sehen können, die obige calc_add.py ausgeführt, die print-Anweisung wird ausgeführt und __name__: calc_add wird ausgegeben. Die if-Anweisung lautet False (__ name__ = calc_add) und wird daher nicht ausgeführt ② Als nächstes wird die print-Anweisung von main.py ausgeführt. ③ Da die if-Anweisung von main.py True ist, werden die folgenden zwei print-Anweisungen ausgeführt. Mit diesem Mechanismus können Sie eine Funktion aufrufen und verwenden. ④ Daher muss die Notation if name == '__ main __':` eingefügt werden. Es ist jedoch nicht unbedingt erforderlich, wenn Sie es aufrufen und verwenden.

main.py


from calc_add import calc_add, calc_multi

print('__name__2:', __name__)

if __name__ == '__main__':   
    print(calc_add(5,3))
    print(calc_multi(5, 3))

Ergebnis

__name__: calc_add
__name__2: __main__
8
15

** Hinweis) print ('__ name__:', __name __) ist zur Erläuterung des Mechanismus enthalten und wird normalerweise nicht benötigt ** class Die Klasse sieht genauso aus wie die Funktion. Deklarieren Sie jedoch die Klasse. Wie Sie in der if-Anweisung sehen können, definiert die Klasse dann die Instanz und ruft dann die in der Klasse definierte Funktion auf und verwendet sie. Dieser Mechanismus wird als objektorientiert bezeichnet. Das heißt, es ist ein Mechanismus, der viele Instanzen aus Klassen generiert und ausführt. Die Merkmale der Klassendefinition sind wie folgt. ① Klasse deklarieren (2) Definieren Sie den Konstruktor def __init __ (self, x, y):. Die Variable self ist obligatorisch und definiert (die Variable self ist etwas Besonderes, aber ich habe eine Weile gebraucht, um zu glauben, dass es nur eine der Variablen ist). Die Argumente x und y definieren, was zu einem bestimmten Zeitpunkt benötigt wird. 【Referenz】 Was ist Python selbst? Erläuterung der Verwendung und Vorsichtsmaßnahmen

Über sich selbst
・ Selbst wird beim Deklarieren der Instanz nicht als Argument beschrieben
・ Self ist eine Klassenvariable
・ Kann auch für die Klassenvererbung verwendet werden
-Wenn sowohl die Klassenvariable als auch die Instanzvariable Werte haben, erhält die Instanzvariable als Referenz Priorität.

③ Konstruktor def __init __ (self, x, y): ist der Code, der zuerst funktioniert, wenn die Instanz der Klasse definiert wird. ④ Definieren Sie andere notwendige Funktionen. ⑤ Führen Sie die erforderliche Verarbeitung wie "instance.calc_add ()" aus ⑥ if __name__ == '__ main __': wird aus demselben Grund wie die Funktion geschrieben, ist jedoch beim Aufrufen und Verwenden nicht unbedingt erforderlich, sodass viele Klassen diese if-Anweisung oder Ausführungsanweisung nicht haben. ** Hinweis) print ('__ name__:', __name __) ist zur Erläuterung des Mechanismus enthalten und wird normalerweise nicht benötigt **

calc_class.py


class MyCalcClass:
    def __init__(self,x,y):
        self.x = x
        self.y = y
        
    def calc_add1(self, a, b):
        return a + b

    def calc_add2(self):
        return self.x + self.y
  
    def calc_multi(self, a, b):
        return a * b
        
print('__name__:', __name__)
if __name__ == '__main__':        
    instance_1 = MyCalcClass(1,2)
    instance_2 = MyCalcClass(5,10)
    print(instance_1.calc_add1(5,3))
    print(instance_1.calc_add2())
    print(instance_1.calc_multi(5, 3))
    instance_1.calc_print(5)

>python calc_class.py Ergebnis Es ist wie folgt, aber Sie können sehen, dass das Ergebnis in Abhängigkeit vom Anfangswert von Instanz1 berechnet wird. Wenn der if-Anweisungsteil gelöscht wird, wird nur __name__: __main__ ausgegeben.

__name__: __main__
8
3
15
data:5:Wert von y 2

Führen Sie einen anderen Code main.py aus

main_class.py


from calc_class import MyCalcClass

print('__name__2:', __name__)

if __name__ == '__main__':
    instance_1 = MyCalcClass(1,2)
    instance_2 = MyCalcClass(5,10)
    print(instance_1.calc_add1(5,3))
    print(instance_1.calc_add2())
    print(instance_1.calc_multi(5, 3))
    instance_1.calc_print(5)

Ergebnis >python main_class.py Das Ergebnis ist natürlich dasselbe wie ↑. Wie bei der Funktion wird jedoch __name__: calc_class ausgegeben. Das heißt, der Name der aufgerufenen Datei wird in "name" und "main" in den Fall von sich selbst eingegeben.

__name__: calc_class
__name__2: __main__
8
3
15
data:5:Wert von y 2

Zusammenfassung

・ Ich habe den Funktionsaufruf und die Klasse verglichen -Definieren Sie eine Klasse, rufen Sie sie auf und führen Sie die Instanz aus

・ Es ist kurz vor dem Schreiben von allgemeinem Python-Code ・ Dieses Buch beendet die Grundlagen von Python in diesem Abschnitt, aber die fehlenden Teile werden in zukünftigen Abschnitten ergänzt (in gewissem Sinne wird dieses Buch den Code weiterhin mit verschiedenen Python-Bibliotheken erklären).

Recommended Posts

[Einführung in Data Scientists] Grundlagen von Python ♬ Funktionen und Klassen
[Einführung in Data Scientists] Grundlagen von Python ♬ Funktionen und anonyme Funktionen usw.
[Einführung in Data Scientist] Grundlagen von Python ♬
[Einführung in Data Scientists] Grundlagen von Python ♬ Bedingte Verzweigung und Schleifen
[Einführung in Datenwissenschaftler] Grundlagen der Wahrscheinlichkeit und Statistik ♬ Wahrscheinlichkeits- / Wahrscheinlichkeitsvariable und Wahrscheinlichkeitsverteilung
# 4 [Python] Grundlagen der Funktionen
[Einführung in Python3 Tag 12] Kapitel 6 Objekte und Klassen (6.3-6.15)
[Einführung in Python3 Tag 11] Kapitel 6 Objekte und Klassen (6.1-6.2)
[Einführung in Data Scientist] Grundlagen der wissenschaftlichen Berechnung, Datenverarbeitung und Verwendung der Grafikzeichnungsbibliothek ♬ Grundlagen von Scipy
[Einführung in Data Scientist] Grundlagen der wissenschaftlichen Berechnung, Datenverarbeitung und Verwendung der Grafikzeichnungsbibliothek ♬ Grundlagen von Pandas
[Einführung in Data Scientist] Grundlagen der wissenschaftlichen Berechnung, Datenverarbeitung und Verwendung der Grafikzeichnungsbibliothek ♬ Grundlagen von Matplotlib
Liste der Python-Bibliotheken für Datenwissenschaftler und Dateningenieure
[Einführung in cx_Oracle] (Teil 6) Zuordnung von DB- und Python-Datentypen
[Einführung in Data Scientists] Deskriptive Statistik und einfache Regressionsanalyse ♬
[Einführung in Python3 Tag 1] Programmierung und Python
[Einführung in Data Scientist] Grundlagen der wissenschaftlichen Berechnung, Datenverarbeitung und Verwendung der Grafikzeichnungsbibliothek ♬ Umgebungskonstruktion
[Python] Zusammenfassung der Verwendung von Split- und Join-Funktionen
[Einführung in Python] Zusammenfassung der Funktionen und Methoden, die häufig in Python vorkommen [Problemformat]
Vergleich der Verwendung von Funktionen höherer Ordnung in Python 2 und 3
[Einführung in Python] Kombinieren Sie Nikkei-Durchschnitts- und NY Dow-CSV-Daten
Lösen der Einführung von AOJ in Algorithmen und Datenstrukturen in Python -Part1-
Einführung in die Python-Grundlagen des maschinellen Lernens (unbeaufsichtigtes Lernen / Hauptanalyse)
[Einführung in Python] Ich habe die Namenskonventionen von C # und Python verglichen.
Lösen der Einführung von AOJ in Algorithmen und Datenstrukturen in Python -Part2-
Lösen der Einführung von AOJ in Algorithmen und Datenstrukturen in Python -Part4-
[Einführung in die Udemy Python3 + -Anwendung] 69. Import des absoluten Pfads und des relativen Pfads
[Einführung in die Udemy Python3 + -Anwendung] 12. Indizieren und Schneiden von Zeichenketten
Einführung in TensorFlow - Zusammenfassung von vier Regeln und grundlegenden mathematischen Funktionen
[Einführung in cx_Oracle] (Teil 2) Grundlagen zum Verbinden und Trennen mit Oracle Database
Lösen der Einführung von AOJ in Algorithmen und Datenstrukturen in Python -Part3-
[Einführung in Python3, Tag 17] Kapitel 8 Datenziele (8.1-8.2.5)
Binden Sie Methoden an Python-Klassen und -Instanzen
[Einführung in die Udemy Python3 + -Anwendung] 55. In-Function-Funktionen
[Einführung in Python3, Tag 17] Kapitel 8 Datenziele (8.3-8.3.6.1)
[Einführung in Python3 Tag 19] Kapitel 8 Datenziele (8.4-8.5)
[Einführung in Python3 Tag 18] Kapitel 8 Datenziele (8.3.6.2 bis 8.3.6.3)
Komprimieren Sie Python-Daten und schreiben Sie in SQLite
Einfache Einführung in die Python3-Serie und OpenCV3
Python-Grundlagen ①
# Python-Grundlagen (Funktionen)
Python-Grundlagen: Funktionen
Einführung von Python
[Einführung in die Udemy Python3 + -Anwendung] 26. Kopie des Wörterbuchs
[Einführung in die Udemy Python3 + -Anwendung] 19. Kopie der Liste
[Cx_Oracle Primer] (Teil 3) Grundlagen zum Durchsuchen von Tabellen
[Python] Lesen von Daten aus CIFAR-10 und CIFAR-100
[Einführung in Python3, Tag 22] Kapitel 11 Parallele Verarbeitung und Vernetzung (11.1 bis 11.3)
[Einführung in Python] Umgang mit Daten im JSON-Format
[Einführung in die Udemy Python3 + -Anwendung] 64. Namespace und Gültigkeitsbereich
[Python] Kapitel 02-01 Grundlagen von Python-Programmen (Operationen und Variablen)
[Einführung in cx_Oracle] (5.) Umgang mit japanischen Daten
Liste des zu verschiebenden und zu merkenden Python-Codes
[Hikari-Python] Kapitel 09-01 Klassen (Grundlagen von Objekten)
cv2-Funktionen und Datentypen (OpenCV-Python-Bindung)
[Einführung in Python] Grundlegende Verwendung von Lambda-Ausdrücken
[Python] Von der morphologischen Analyse von CSV-Daten bis zur CSV-Ausgabe und Diagrammanzeige [GiNZA]
[Einführung in cx_Oracle] (Teil 9) Zuordnung von DB- und Python-Datentypen (Version 8 oder höher)
Python-Grundkurs CSV-Verarbeitung (Funktionen und Klassen Nr. 1 CSV wird gelesen und geschrieben)
[Einführung in Python] So erhalten Sie den Datenindex mit der for-Anweisung
Grundlagen der Python-Scraping-Grundlagen