Inhaltsverzeichnis
Einführung und Funktionen von Python
Python unterstützt mehrere Programmierstile
Aufbau einer Python-Entwicklungsumgebung
Lernen Sie den Python-Interpreter kennen
Regeln für die Benennung von Variablen
Kennen Sie den „Booleschen Typ“
Einführung und Funktionen von Python
Python unterstützt mehrere Programmierstile
Python unterstützt einen prozessorientierten Programmierstil . Wenn Sie mit der Sprache C vertraut sind , können Sie Python wie C schreibenPython unterstützt einen objektorientierten Programmierstil . Zahlen , Strings , Funktionen , Module ... sind alles „ Objekte “.Python unterstützt funktionale Programmierung . Tatsächlich gibt es auf der Welt nur zwei Programmiersprachen : C -ähnliche Sprache und Lisp- ähnliche Sprache . Python unterstützt auch funktionale Programmierung.
Lauf erklären
Python ist eine interpretierte Programmiersprache . Im Gegensatz zu C/C++ konvertiert es die Quellcodedatei nicht in eine ausführbare Datei, bevor es ausgeführt wird . Stattdessen liest der Python-Interpreter den Quellcode Zeile für Zeile . . Genau genommen jedoch Python ist eine „ halbkompilierte , halbinterpretierte “ Sprache . Einerseits liest der Python- Interpreter die Quellcodedatei Zeile für Zeile und konvertiert den Quellcode dann zur Interpretation in Python. Der “Bytecode„ . Führen Sie dann den Bytecode aus . Nachdem wir beispielsweise eine .py- Datei ausgeführt haben , wird eine .pyc- Datei mit demselben Namen generiert . Diese .pyc- Datei ist Python Die vom Interpreter generierte Bytecode-Datei . Wenn die .pyc- Datei bereits vorhanden ist , muss sie nicht erneut „ übersetzt “ werden , was auch die Ausführungseffizienz verbessert
Plattformübergreifend
Python wird basierend auf einem Python- Interpreter ausgeführt . Solange ein Python- Interpreter auf einem bestimmten Betriebssystem / einer bestimmten Plattform ausgeführt werden kann , kann er perfekt ausgeführt werdenPython- Quellcode . Mainstream- Windows, Linux, Mac und andere Betriebssysteme können Python sehr gut unterstützen
Skalierbar und stark
Python kann die Sprache C/C++ problemlos aufrufen . Wenn Sie der Meinung sind, dass die Logikleistung nicht den Anforderungen entspricht , können Sie diesen Teil des Moduls mit C/C++ rekonstruieren und mit Python aufrufen.
Einbettbar
Python- Code kann zur Ausführung auch einfach in C/C++ eingebettet werden
reichhaltige Bibliothek
Die Natur eines Gentlemans ist nicht anders , und er ist gut im Unwahrheiten .Die Python- Standardbibliothek ist bereits sehr umfangreich und leistungsstark , und es gibt auch sehr große Bibliotheken von Drittanbietern . Sie kann fast Himmel und Erde erreichen und ich kann tun, was ich will~
Auswahl der Python- Version
Python hat derzeit zwei Hauptversionszweige :
Python2: Die neueste Version ist Python2.7.14Python3: Die neueste Version ist Python3.6.2Obwohl Python3 eine aktualisierte Version von Python2 ist , sind viele Grammatiken nicht kompatibel!Zur Kompatibilität:C++ ist sehr kompatibel mit der C- Sprache ( in der C-Sprache geschriebener Code kann direkt mit einem C++- Compiler kompiliert werden ), aber es bedeutet auch, dass C++ viele historische Merkmale der C-Sprache trägt .Aber Python3 und Python2 sind an vielen Stellen inkompatibel (der in Python2 geschriebene Code kann auf dem Python3- Interpreter nicht reibungslos ausgeführt werden ).Dies bedeutet, dass viele bereits in Python 2 geschriebene Codes nicht reibungslos auf Python 3 aktualisiert werden können .Dies bedeutet jedoch auch, dass Python3 einige unvernünftige Stellen drastisch ändern kann , ohne die Last der Geschichte zu tragen .Die offizielle Aussage besagt , dass Python2 bis spätestens 2020 nicht mehr aktualisiert wird .Aber in einigen Unternehmen ist die Python -Version auch Python2.7 oder sogar Python2.6 ( zum Glück gibt es keinen großen Unterschied zwischen Python2.7 und 2.6 ).Dieses Buch lernt hauptsächlich den Inhalt der Python3-Version
Aufbau einer Python- Entwicklungsumgebung
Windows/Linux: VSCode + Python -Plugin ( empfohlen )Windows/Linux: PyCharm ( empfohlen )Lernen Sie den Python- Interpreter kennen
Geben Sie einfach python in die Befehlszeile ein, um den Python- Interpreter aufzurufen . Zu diesem Zeitpunkt sehen wir eine Python- Shell .Erstens können wir diesen Interpreter als einfachen Taschenrechner verwenden .Natürlich können auch beliebige legale Python- Anweisungen ausgeführt werdenDrücken Sie Strg+D, um die Python-Shell zu verlassen.Obwohl wir einige Python- Anweisungen über die Python-Shell ausführen können , müssen wir den Python- Code eher in eine Datei mit dem Suffix .py schreiben und die .py- Datei über den Python- Interpreter interpretieren , um den Code auszuführen
Schnellstart
Variablen und Zuweisungen
Variablen in Python müssen nicht deklariert werden , sie können direkt definiert werden . Der „ Typ “ der Variablen wird zum Zeitpunkt der Initialisierung bestimmtVerwenden Sie = für Initialisierungs- und Zuweisungsvorgänge>>> Zähler = 0>>> Meilen = 1000,0>>> name = 'Bob'>>> Kilometer = 1,609 * MeilenOperationen wie ++/-- werden in Python nicht unterstützt und können nur als geschrieben werden>>> n += 1dynamischer Typ
Der gleichen Variablen können unterschiedliche Wertetypen zugewiesen werden>>> a = 100>>> drucken a100>>> a = 'hehe'>>> drucken aheheRegeln für die Benennung von Variablen
Variablennamen müssen Buchstaben , Zahlen und Unterstriche sein . Sie dürfen jedoch nicht mit Zahlen beginnen ( die Regeln sind die gleichen wie in der Sprache C ).Bei Variablennamen wird die Groß-/Kleinschreibung beachtet . case und Case sind zwei verschiedene Variablen .Kennen Sie „ Zahlen“
In Python gibt es keine Schlüsselwörter wie „int“, „float “ usw. Tatsächlich besteht die Art der Zahl darin, zwischen Typen wie „int“ und „float“ zu unterscheiden . Verwenden Sie die integrierte Funktion „type“ , um den Typ der Variablen anzuzeigen .>>> a = 1>>> Typ(a)<Typ 'int'>>>> a = 1,0>>> Typ(a)<Typ 'float'>Der Wertebereich der numerischen Variablen in Python ist nicht begrenzt ( er hängt ganz davon ab, wie viel Speicher Ihr Computer hat ) , anstatt durch 4 Bytes wie int in der C- Sprache dargestellt zu werden.Es gibt auch einen Typ „ komplexe Zahl “ in Python . Es handelt sich um dasselbe Konzept wie „ komplexe Zahl “ in der Mathematik>>> a = 10 + 5j>>> drucken(a)(10+5j)Kennen Sie „ Zeichenfolge “
Einfache Anführungszeichen ('), doppelte Anführungszeichen (") und dreifache Anführungszeichen ('''/""") können in Python zur Darstellung von Zeichenfolgen verwendet werden . Die Unterschiede zwischen diesen drei Zeichenfolgen werden später erläutert.>>> a = 'hehe'>>> b = „hehe“>>> c = '''hehe''''Dies hat den Vorteil, dass es nicht nötig ist, lahm zu entkommen , wenn die Zeichenfolge Zeichen wie „ enthält>>> a = 'Mein Name ist "tangzhong"'>>> drucken aMein Name ist „tangzhong“Einige unsichtbare Zeichen müssen jedoch immer noch maskiert werden , indem \ als Escapezeichen verwendet wird , beispielsweise das Zeilenumbruchzeichen \n>>> a = 'Mein Name ist \n "tangzhong"'>>> drucken(a)Ich heißeVerwenden Sie den Indexoperator [] oder den Slice-Operator [:] , um Teilzeichenfolgen abzurufen ( die Slice-Operation ist ein Intervall, bei dem vor dem Öffnen geschlossen wird ).Die Indexierungsregeln für Zeichenfolgen lauten : Der erste Zeichenindex ist 0 und der letzte Zeichenindex ist -1 ( was als len-1 verstanden werden kann).>>> pystr = 'hehe'>>> pystr[0]'H'>>> pystr[-1]'e'>>> pystr[1:3]'eh'>>> pystr[1:-1]'eh'>>> pystr[1:]'ehe'>>> pystr[:2]'Er'>>> pystr[:]'hehe'+ für String-Verkettung , * für String-Wiederholung>>> a = 'hehe'>>> b = 'haha'>>> c = a + b>>> drucken(c)hahahahaha>>> d = a * 4>>> drucken(d)hehehehehehehe>>> e = a * bTraceback (letzter Anruf zuletzt):Datei „<stdin>“, Zeile 1, in <module>TypeError: Sequenz kann nicht mit Nicht-Int vom Typ „str“ multipliziert werden.In Python gibt es kein Konzept wie „ Zeichentyp “ . Ein einzelnes Zeichen ist auch eine Zeichenfolge>>> a = 'hehe'>>> Typ(a[0])<Typ 'str'>Verwenden Sie die integrierte Funktion len , um die Länge einer Zeichenfolge zu ermitteln>>> a = 'hehe'>>> print(len(a))4Formatzeichenfolge , Sie können % verwenden , um das Format zu ersetzen .>>> a = 100>>> pystr = "a = %d">>> result = pystr % a>>> drucken(Ergebnis)a = 100Es kann wie folgt vereinfacht werden>>>print("a = %d" % a)a = 100Kennen Sie den „ Booleschen Typ “
>>> a = Wahr>>> drucken aWAHR>>> print(type(a))<Typ 'bool'>Boolesche Variablen sind ebenfalls ein besonderer Ganzzahltyp . Bei der Arbeit mit Ganzzahlen wird True als 1 und False als 0 behandeltInput-Output
Die Druckfunktion gibt das Ergebnis auf der Standardausgabe ( Monitor ) aus .Die Eingabefunktion übernimmt Benutzereingaben von der Standardeingabe>>> name = input('Namen eingeben:')Geben Sie den Namen ein:aaa>>> print(name)aaaDas von der Eingabe zurückgegebene Ergebnis ist nur eine Zeichenfolge . Wenn Sie eine Zahl benötigen , müssen Sie die int- Funktion verwenden , um die Zeichenfolge in eine Zahl umzuwandeln .>>> num = input('Anzahl eingeben:')Geben Sie die Zahl ein: 100>>> print(num + 1)Traceback (letzter Anruf zuletzt):Datei „<stdin>“, Zeile 1, in <module>TypeError: „str“- und „int“-Objekte können nicht verkettet werden>>> print int(num) + 1101Notiz
Python verwendet # als einzeiligen Kommentar . Der Inhalt hinter # ist der Inhalt des Kommentarsa = 1,0 # definiere aprint(type(a))Seien Sie vorsichtig , wenn Sie chinesische Kommentare verwenden ~~ Die direkte Verwendung kann beim Ausführen zu Fehlern führen (Python3 hat dieses Problem derzeit nicht , Python2 sollte darauf achten)Der Quellcode von Python unterstützt standardmäßig nur ASCII . Wenn Sie also Chinesisch einbinden möchten , müssen Sie # - * - programming: UTF- 8 - *- ganz am Anfang der Codedatei angebenOperator
Operatoren wie +-*/% werden in Python unterstützt . Ihr Verhalten ist das gleiche wie das der C- Sprache ./ ist „ exakte Teilung “>>> a = 1>>> b = 2>>> print(a / b)0,5// ist „ teilbar “. Das Ergebnis wird gerundet>>> a = 1>>> b = 2>>> a // b drucken0Beachten Sie , dass in Python2 / die traditionelle Division ist , // die Bodendivision ist und die Semantik von Python3 völlig anders ist** Zeigt den Leistungsvorgang an ( denken Sie daran, dass die Daten von Python keine Obergrenze haben ).>>> a = 100>>> b = 100>>> a ** b drucken1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000Python unterstützt auch Standardvergleichsoperatoren . > < >= <= == != Das Ergebnis des Ausdrucks dieser Operatoren ist ein boolescher Wert>>> 2 < 4WAHR>>> 2 == 4FALSCH>>> 2 > 4FALSCH>>> 2 != 4WAHRPython unterstützt auch logische Operatoren . und oder nicht>>> 2 < 4 und 2 == 4FALSCH>>> 2 > 4 oder 2 < 4WAHR>>> nicht 6,2 <= 6WAHRIn Python entspricht 3 < 4 < 5 3 < 4 und 4 < 5 , was sich von den meisten anderen Programmiersprachen unterscheidet .Es wird zwischen hoher und niedriger Priorität zwischen Operatoren unterschieden . Klammern sollten sinnvoll verwendet werden, um die Lesbarkeit des Codes zu verbessern .Operatoren können auch zwischen Zeichenfolgen und Zeichenfolgen verwendet werden . Beispielsweise wird + zum Verbinden von Zeichenfolgen verwendet>>> print 'haha' + 'hehe'hahahaSie können == != zwischen Zeichenfolgen verwenden , um festzustellen, ob der Inhalt der Zeichenfolgen gleich ist>>> 'haha' != 'hehe'WAHRDie Größe kann auch zwischen Zeichenfolgen verglichen werden . Das Ergebnis dieser Größe hängt von der „ lexikografischen Reihenfolge “ der Zeichenfolge ab>>> 'haha' < 'hehe'WAHR
Umfang und Lebenszyklus
In Python ändern def, class ( wir werden später darüber sprechen ) und lamda ( wir werden später darüber sprechen ) den Umfang von Variablenif, else, elif, while, for, try/exclusive ( darüber sprechen wir später ) ändern den Umfang der Variablen nichtfür i im Bereich(0, 10):drucken(i)print(i) #Auch wenn der for- Schleifen-Anweisungsblock nicht vorhanden ist , kann die Variable i immer noch auf die i- Variable zugreifen .def func():x = 1drucken(x)print(x) #Außerhalb des Def- Funktionsanweisungsblocks kann nicht mehr auf die Variable x zugegriffen werdenDie integrierte Funktion globals() gibt zurück, welche Variablen sich im globalen Gültigkeitsbereich befinden , und die integrierte Funktion locals() gibt zurück, welche Variablen im lokalen Gültigkeitsbereich liegena = 100def Func():x = 0print(globals())print(locals())Drucken Sie 'In Gloabl'print(globals())print(locals())print('In Func')Func()# AusführungsergebnisIn Gloabl{'a': 100, '__builtins__': <module '__builtin__' (integriert)>, '__file__': 'test.py','__package__': Keine, 'Func': <function Func at 0x7f9085d5b9b0>, '__name__': '__main__','__doc__': Keine}{'a': 100, '__builtins__': <module '__builtin__' (integriert)>, '__file__': 'test.py','__package__': Keine, 'Func': <function Func at 0x7f9085d5b9b0>, '__name__': '__main__','__doc__': Keine}In Func{'a': 100, '__builtins__': <module '__builtin__' (integriert)>, '__file__': 'test.py','__package__': Keine, 'Func': <function Func at 0x7f9085d5b9b0>, '__name__': '__main__','__doc__': Keine}{'x': 0}Was den Lebenszyklus von Python -Variablen betrifft , müssen sich Programmierer keine Sorgen machen . Python bietet einen Garbage-Collection-Mechanismus, um automatisch zu erkennen, ob der Lebenszyklus einer Variablen zu Ende ist, und automatisch Speicherplatz freizugeben ( wir werden darüber sprechen). Details später ).
Python- Schlüsselwörter
Derzeit sind wir mit Schlüsselwörtern wie while, if, else, for, continue, break, return usw. in Berührung gekommen . Tatsächlich gibt es noch viele andere Schlüsselwörter
Liste / Tupel / Wörterbuch
Listen und Tupel ähneln Arrays in C.
Verwenden Sie [] für Listen und () für Tupel .>>> alist = [1, 2, 3, 4]>>> alist[1, 2, 3, 4]>>> atuple = (1, 2, 3, 4)>>> atuple(1, 2, 3, 4)Listen und Tupel können eine beliebige Anzahl von Python- Objekten beliebiger Art enthalten>>> a = [1, 'haha']>>> a[1, 'haha']Sie können den Index verwenden, um auf die darin enthaltenen Elemente zuzugreifen . Der Index beginnt bei 0. Der letzte Index ist -1>>> ein[0]1>>> ein[1]'Haha'>>> a[-1]'Haha'Sie können die Slice-Operation [:] verwenden , um eine Teilmenge der Liste oder des Tupels abzurufen . Diese Operation ist dieselbe wie die String-Operation>>> ein[:][1, 'haha']Der einzige Unterschied zwischen einer Liste und einem Tupel besteht darin , dass die Elemente in einer Liste geändert werden können , die Elemente in einem Tupel jedoch nicht>>> a = [1, 2, 3, 4]>>> a[0] = 100>>> a[100, 2, 3, 4]>>> a = (1, 2, 3, 4)>>> a[0] = 100Traceback (letzter Anruf zuletzt):Datei „<stdin>“, Zeile 1, in <module>TypeError: Das „Tuple“-Objekt unterstützt keine Elementzuweisung>>>Ein Wörterbuch ist ein Mapping-Datentyp in Python . Es speichert Schlüssel-Wert-Paare (Schlüssel-Wert).Als Schlüssel kann nahezu jede Art von Python- Objekt verwendet werden , am häufigsten werden jedoch Zahlen und Zeichenfolgen verwendet .Verwenden Sie {} , um ein Wörterbuch darzustellen .>>> a = { 'ip' : '127.0.0.1'} #Wörterbuch erstellen>>> a['ip'] #Holen Sie sich die Elemente im Wörterbuch'127.0.0.1'>>> a['port'] = 80 #Fügen Sie ein neues Schlüssel-Wert-Paar ein>>> a{'ip': '127.0.0.1', 'port': 80}
„ Zitat “ verstehen
In Python können Sie die integrierte Funktion id verwenden , um die „ Adresse “ der Variablen anzuzeigen>>> a = 100>>> id(a)24187568>>> a = 200>>> id(a)24191144>>> b = a>>> id(b)24191144>>> b = 300>>> id(b)25094648Die Neuzuweisung von a zu 200 entspricht dem Erstellen eines neuen Objekts wie 200 und dem anschließenden erneuten Binden des Variablennamens a an das Objekt 200 .Das Zuweisen von a zu b entspricht tatsächlich dem Erstellen einer Variablen namens b und dem Binden des Namens b an das Objekt 200 .Ändern Sie den Wert von b erneut , und Sie können sehen, dass tatsächlich ein Objekt wie 300 erstellt wird und b an das Objekt von 300 gebunden ist .Variablennamen wie „a“ und „b“ sind eigentlich nur ein Alias eines Objekts oder werden als „ Referenz “ einer Variablen bezeichnet
Codeblöcke und Einrückung
Python verwendet Einrückungen zur Darstellung von Codeblöcken . Aus grammatikalischer Sicht entspricht dies der natürlichen Angabe des Codestils .Einzigartig in Python ist die Verwendung von Einrückungen anstelle von { } , wodurch ein parteipolitischer Kampf vermieden wird ~Es gibt keine geschweiften Klammern . Daher muss nicht darüber nachgedacht werden, wo die geschweiften Klammern platziert werden
if -Anweisung
Die Standardsyntax der if- bedingten Anweisung lautet wie folgt .Wenn der Wert des Ausdrucks ungleich Null oder Boolean True ist, wird do_something ausgeführt , andernfalls wird die nächste Sprunganweisung ausgeführt .wenn Ausdruck1:do_something1elif Ausdruck2:do_something2anders:do_something3Python unterstützt keine Anweisungen wie „switch/case“ . Es besteht keine Notwendigkeit, sie zu unterstützen . Tatsächlich ist die switch/case- Syntax nicht elegant .Wenn zu viele bedingte Verzweigungen vorhanden sind , können Sie die „ tabellengesteuerte “ Methode zum Organisieren des Codes in Betracht ziehen . Weitere Informationen finden Sie in Kapitel 18 von << Code-Enzyklopädie >> .
while- Schleife
Die While -Schleifenanweisung ähnelt der Syntax der If -Anweisung . Solange der Wert des Ausdrucks nicht 0 oder True ist, wird do_something in einer Schleife ausgeführtwährend Ausdruck:etwas tun# Schleife, um den Druck dreimal auszuführenZähler = 0während Zähler < 3:print 'loop %d' % counterZähler += 1
for -Schleife
Die for- Schleife in Python unterscheidet sich von der herkömmlichen for- Schleife .Die for- Schleife empfängt ein iterierbares Objekt ( Sequenz oder Iterator ) als Parameter und iteriert jeweils ein Element#Durchlaufen Sie jedes Zeichen in der Zeichenfolgea = 'hehe'für c in a:Drucken c# AusführungsergebnisHeHe#Durchlaufen Sie jedes Element in der Listea = [1, 2, 3, 4]für Artikel in einem:Artikel drucken# Ausführungsergebnis1z234#Durchlaufen Sie alle Schlüsselwerte im Wörterbucha = {'ip':'192.168.1.1', 'port':80}für Schlüssel in a:Druckschlüssel, ein[Schlüssel]# AusführungsergebnisIP 127.0.0.1Port 80Der integrierte Funktionsbereich kann eine Zahlenliste generieren , was für das Durchlaufen der For-Schleife praktisch ist# for- Schleife führt drei Ausdrucke ausfür i im Bereich(0, 3):print 'loop %d' % i# AusführungsergebnisSchleife 0Schleife 1Schleife 2Die Bereichsfunktion verfügt tatsächlich über drei Parameter . Die ersten beiden Parameter stellen ein Intervall dar, das vor dem Öffnen geschlossen und dann geöffnet wird . Der dritte Parameter stellt den Schritt dar, die Schrittgröße jeder Iteration# Durchlaufe die geraden Zahlen im Intervall [0, 100)für i im Bereich(0, 100, 2):Drucken Sie i
Pause und Weiter
Verwenden Sie die break- Anweisung, um aus der aktuellen Schleife auszubrechen#Finden Sie das erste Vielfache von 3 in [0, 100)für i im Bereich(0, 100):wenn i % 3 == 0:brechenVerwenden Sie die continue- Anweisung , um zum Anfang der Schleife zurückzukehren und die Schleifenbedingung zu bestimmen .Wenn die Schleifenbedingung erfüllt ist , wird die nächste Schleife ausgeführt .
pass- Anweisung
Manchmal ist es notwendig, das Konzept einer leeren Anweisung zu verwenden , die nichts bewirkt . Da es kein {} gibt, ist eine spezielle Anweisung erforderlich, um den Platz zu belegen , sonst wird es verwirrend.wenn x % 2 == 0:passierenanders:etwas tun
Listenverständnis
Es ist Zeit, das Wunder erneut zu erleben . Die leistungsstarke und prägnante Python-Syntax , die erste ShowVerwenden Sie eine for- Schleife, um die resultierenden Werte in eine Liste einzufügen# Erzeugen Sie eine Folge von Zahlenquadraten in [0, 4)quadriert = [x ** 2 für x im Bereich(4)]im Quadrat drucken# Ausführungsergebnis[0, 1, 4, 9]Dieser Vorgang kann auch mit der if- Anweisung verwendet werden#Erhalten Sie alle ungeraden Zahlen im Intervall [0, 8 )evens = [x für x in range(0, 8) if x % 2 == 1]Abende drucken
Funktion
Einige Codes , die wiederverwendet werden können, können extrahiert und in eine Funktion eingefügt werden .Python verwendet def , um eine Funktion zu definieren . Verwenden Sie return , um das Ergebnis zurückzugeben .def Add(x, y):gib x + y zurückPython verwendet () , um Funktionen aufzurufenprint(Add(1, 2))Verstehen Sie „ formale Parameter “ und „ aktuelle Parameter “: Formale Parameter entsprechen dem Konzept der „ Unbekannten “ in der Mathematik . Tatsächliche Parameter dienen zur Bestimmung spezifischer Werte für Unbekannte .In Python gibt es kein Konzept des „ Überladens “ . Bei Funktionen mit demselben Namen überschreibt letzteres das ersteredef Func():print('aaaa')def Func():print('bbbb')Func()# AusführungsergebnisbbbPython unterstützt Standardparameter . Funktionsparameter können Standardwerte habendef Func(debug=True):wenn debug:print('im Debug-Modus')„Fertig“ druckenFunc()Func(False)Syntax zum Entpacken (Entpacken) von Python : Die Funktion gibt mehrere Werte zurückdef GetPoint():100, 200 zurückgebenx, y = GetPoint()Wenn ich nur auf y achte und nicht auf x achten möchte , kann ich _ als Platzhalter verwenden_, y = GetPoint()Funktionen sind ebenfalls „ Objekte “. Eine Funktion, wie eine Zahl oder eine Zeichenfolge , kann einen „ Alias “ definieren , um auf sie zu verweisen .def Func():print('aaa')func = Funcfunc()Drucktyp (Funktion)# Ausführungsergebnisaaa<Typ 'Funktion'>Da eine Funktion ein Objekt ist , kann sie auch als Parameter und Rückgabewert einer anderen Funktion verwendet werden . Auf die Details gehen wir später ein .
Dateioperation
Öffnen Sie eine Datei mit der integrierten Funktion „Öffnen“ .handle = open(file_name, access_mode='r')Dateiname ist der Name der Datei . Es kann ein absoluter oder ein relativer Pfad seinhandle = open('text.txt', access_mode='r')# oderhandle = open('/home/tangzhong/text.txt', access_mode='r')access_mode ist die Möglichkeit, die Datei zu öffnen . Die Optionen sind wie folgt'r': schreibgeschützt'w': Nur schreiben'a': Zum Schreiben anhängen't': Als Text lesen und schreiben'b': Lesen und Schreiben im Binärmodushandle ist ein Dateihandle , bei dem es sich um ein iterierbares Objekt handelt . Sie können die for- Schleife direkt verwenden , um den Dateiinhalt Zeile für Zeile zu lesen .für die Zeile im Handle :DruckzeileNachdem das Handle verwendet wurde , muss es geschlossen werden . Andernfalls kommt es zu einem Ressourcenverlust ( die Anzahl der Handles, die von einem Prozess geöffnet werden können, ist begrenzt ).handle.close()Ein vollständiges Beispiel : Zählen der Worthäufigkeit im TextIn einer Textdatei ist jede Zeile ein Wort . Es kann Wiederholungen geben . Zählen Sie, wie oft jedes Wort vorkommt .Beispieldatei :aaabbbcccaaabbCaaaDer Code ist wie folgt implementiert :handle = open('text.txt', mode='r')Wörter = {}für Wort im Griff:Wort = Wort[:-1] # Entfernen Sie das \n am Endewenn Wort nicht in Wörtern: # Verwenden Sie das Schlüsselwort in, um zu bestimmen, ob das Wort der Schlüssel des Wörterbuchs ist.Wörter[Wort] = 1anders:Wörter[Wort] += 1;handle.close()Wörter drucken
Modul
Wenn wir eine große Menge Code in einem Projekt haben , müssen wir den Code in mehreren verschiedenen .py- Dateien ablegenDer Code in anderen .py- Dateien kann über das Schlüsselwort import referenziert werden .Die importierte Codedatei wird als „ Modul “ bezeichnet .Die importierte Datei , entfernen Sie das Suffix .py , ist der ModulnameZum Beispiel :# add.py -Inhaltdef Add(x, y):gib x + y zurück# test.py- Inhalt , Modulnamen direkt importierenImport hinzufügenprint add.Add(1, 2)# test2.py- Inhalt , nur der Name wird im Import-Add- Modul hinzugefügt .aus hinzufügen importieren Hinzufügendrucken Add(1, 2)#test3.py- Inhalt , importieren Sie den Modulnamen und geben Sie dem Modulnamen einen Alias .Import hinzufügena = hinzufügenprint a.Add(1, 2)Die Reihenfolge, in der Module durchsucht werden, besteht darin, zuerst das aktuelle Verzeichnis und dann das Python- Installationsverzeichnis zu finden .Importsystemprint sys.path #Drucken Sie den Pfad der Modulsuche aus
Utility-Funktion
Zuvor sind wir mit einigen sehr nützlichen integrierten Funktionen in Berührung gekommen . Hier fassen wir sie kurz zusammen
spezielle Kennung
Python verwendet Unterstriche (_) als Präfixe und Suffixe für Variablen, um spezielle Bezeichner zu kennzeichnen ._xxx stellt eine „ private Variable “ dar, die nicht mit from module import * importiert werden kann# add.pydef _Add(x, y):gib x + y zurück# test.pyaus Import hinzufügen *_Add(1, 2)# AusführungsergebnisTraceback (letzter Anruf zuletzt):Datei „test.py“, Zeile 3, in <module>_Add(1, 2)NameError: Name „_Add“ ist nicht definiert_xxx_ ( ein Unterstrich davor und danach ), __xxx__ ( zwei Unterstriche davor und danach ) sind im Allgemeinen systemdefinierte Namen . Wir sollten diesen Stil bei der Benennung von Variablen vermeiden , um Konflikte mit Systemvariablen zu vermeiden .
Dokumentzeichenfolge
Das Schreiben von Kommentaren ist eine große Hilfe, um die Lesbarkeit des Programms zu verbessern .Zuvor haben wir # eingeführt , um einzeilige Kommentare darzustellen .Für mehrzeilige Kommentare können wir am Anfang der Funktion / Klasse dreifache Anführungszeichen ('''/""") verwenden . Dieses Ding wird auch Dokumentationszeichenfolge genanntdef Add(x, y):'''Definieren Sie die Funktion zum Addieren von zwei Zahlen'''return x + y
Verwenden Sie das doc- Attribut des Objekts, um dieses Hilfedokument anzuzeigen ( vergessen Sie nicht , dass Funktionen auch Objekte sind ) .drucken(Add.__doc__)# AusführungsergebnisDefinieren Sie die Funktion zum Addieren von zwei NumOder nutzen Sie die integrierte Funktion help, um den gleichen Effekt zu erzielenHilfe(Hinzufügen)# AusführungsergebnisAddiere(x, y)Definieren Sie die Funktion zum Addieren von zwei NumDer Dokumentationsstring muss am Anfang der Funktion / Klasse stehen , andernfalls kann er nicht über __doc__ oder help aufgerufen werdenModuldokumentation
Nicht nur eine Funktion / Klasse kann einen Dokumentstring haben , sondern auch ein Modul# add.py'''Definieren Sie eine Funktion zum Hinzufügen'''def Add(x, y):gib x + y zurück# test.pyImport hinzufügenprint(add.__doc__)# AusführungsergebnisDefinieren Sie eine Funktion zum Hinzufügen
Unix- Startzeile
Für Unix -ähnliche Systeme wie Linux oder Mac können Sie der Python- Codedatei eine Startzeile hinzufügen , um den Ausführungsmodus des Programms anzugeben#!/usr/bin/pythonprint('haha')Speichern Sie den obigen Code als test.py. Fügen Sie dieser Datei ausführbare Berechtigungen hinzu : chmod +x test.pyDann kann es von ./test.py ausgeführt werden .