Es gibt einige kleine Fallstricke in der Python-Sprache, die besonders leicht zu verwechseln sind und zu Fehlern führen. Wenn Anfänger nicht aufpassen, kann es leicht passieren, dass einige davon im Detail analysiert werden Ich hoffe, dass es für Anfänger hilfreich ist. Freunde in Not können sich darauf beziehen. Schauen wir uns das unten an.
Vorwort
Dieser Artikel fasst hauptsächlich einige häufige Fehler zusammen, die Anfänger machen, die Python lernen. Insgesamt gibt es vier einfache Fehler Werfen wir einen Blick auf die ausführliche Einführung unten.
1. i+=1 ist nicht gleich ++i
Anfänger, die nicht viel über die Python-Sprache wissen, und sie passieren c++, java haben Mit dem Sprachhintergrund ist es leicht, ++i und i+=1 zu verwechseln
Schauen wir uns zunächst ein kleines Beispiel an:
i=0 mylist=[1,2,3,4,5,6] while i <len(mylist): print(mylist[i]) ++i
Dieser Code geht davon aus, dass es kein Problem gibt, und ich behalte +1 bei, was in der Tat nicht wahr ist weitergeben 1,Eine Endlosschleife Weil der Python-Interpreter ++i als +(+i)
darstellt, und es ist ähnlich für --i
print(+1) >>>1 print(++1) >>>1 print(+++1) >>>1
Jetzt verstehe ich, dass ++i zwar in der Python-Syntax zulässig ist, es sich jedoch nicht um eine Operation des Inkrementierens handelt, wie wir es verstehen.
2. Unterscheiden Sie die Verwendung von == und is
Bei der Beurteilung, ob Zeichenfolgen gleich sind, werden insbesondere Anfänger is und == verwechseln führt zu unterschiedlichen Programmen. Das Verhalten ist unter verschiedenen Umständen unterschiedlich:
Schauen wir uns zum Beispiel zunächst ein einfaches Beispiel an:
a='Hi' b='Hi' print(a is b) >>>True print(a==b) >>>True #看起来is和==好像是一样的
Schauen wir uns das noch einmal an. Zweites Beispiel:
str1='Wo shi yi ge chi huo' str2='Wo shi yi ge chi huo' print(str1 is str2) >>>False#is的结果是False print(str1==str2) >>>True #==的结果为True,看二者不一样了吧
Drittes Beispiel:
str3='string' str4=''.join(['s','t','r','i','n','g']) print(str3) >>>string print(str3 is str4) >>>False #is的结果是False print(str3==str4) >>>True #==的结果为True,看二者不一样了吧
Wir verwenden die integrierte Funktion
, um die Speicheradresse des Objekts zurückzugeben. Wenn Sie sie überprüfen, ist sie klar ist die Kennung des Objekts, die zum Vergleichen von zwei verwendet wird. Ob derSpeicherplatzid()
des Objekts derselbe ist, ob es dieselbe Raumadresse verwendet, und
soll vergleichen ob Der Inhalt der beiden Objekte
ist gleich.3. Um Zeichenfolgen zu verbinden, insbesondere große Zeichenfolgen, verwenden Sie am besten „join“ anstelle von +
Bei der Verarbeitung von Zeichenfolgen wird es am häufigsten verwendet. Der Schlüssel ist die Verbindung. Die Zeichenfolge in Python ist ein unveränderliches Objekt und kann nach der Erstellung nicht direkt geändert werden die Effizienz der String-Verbindung in Python.Verwenden Sie +, um Strings zu verbinden:
Verwenden Sie Join, um Zeichenfolgen zu verbinden.
str1,str2,str3='test','string','connection' print(str1+str2+str3) >>>test string connection
Wenn Sie jedoch große Zeichenfolgen verbinden, beispielsweise wenn Sie etwa 100.000 Zeichenfolgen verbinden möchten, ist die Verknüpfung erforderlich Methode wird viel schneller sein (sogar hundertmal anders). Zum Beispiel die folgenden 100.000 String-Verbindungen: S1+S2 +S3+....+SN, da die Zeichenketten unveränderliche Objekte sind und nach der Ausführung ein neuer Speicher zugewiesen werden muss, werden während des Prozesses der Verbindung von N Zeichenketten jeweils N-1 Zwischenergebnisse generiert Sobald ein Zwischenergebnis generiert wird, muss der Speicher einmal zugewiesen werden, was die Ausführungseffizienz erheblich beeinträchtigt.Aber Join ist anders. Es gilt für den gesamten Speicher auf einmal und kopiert dann jedes Element in string in den Speicher, sodass die Verknüpfung viel schneller erfolgt.
Daher ist es für die Zeichenfolgenverkettung
insbesondere für die Verarbeitung großer Zeichenfolgen am besten, die Verknüpfung zu verwenden
str1,str2,str3='test ','string ','connection' print(''.join([str1,str2,str3])) >>>test string connection
4. Schreiben Sie nicht nach for- und while-Schleifen, else block
long_str_list=['This is a long string' for n in range(1,100000)]
Python bietet eine Funktion, die viele Programmiersprachen nicht unterstützen, das heißt, Sie können ein else schreiben Block direkt nach dem Anweisungsblock innerhalb der Schleife. Zum Beispiel:
Dieser else-Block wird sofort ausgeführt, nachdem die gesamte Schleife ausgeführt wurde. Wenn ja, warum heißt es sonst? Warum nennst du es nicht und? In der if/else-Anweisung bedeutet else: Wenn der vorherige if-Block nicht ausgeführt wird, wird der else-Block ausgeführt.
Dasselbe gilt für try/exclusive/else. Die Bedeutung von else in dieser Struktur ist: Wenn der vorherige try-Block nicht fehlschlägt, dann führe den else-Block aus.
try/finally ist auch sehr intuitiv. Das „finally“ bedeutet hier: Nach der Ausführung des vorherigen try-Blocks wird immer der „finally“-Block ausgeführt, egal was passiert.
for i in range(3): print('Loop %d'%i) else: print('Else block') >>>Loop 0 >>>Loop 1 >>>Loop 2 >>>Else block
Wenn die Schleife nicht normal ausgeführt wird, führen Sie sie aus sonst Blockieren .
Tatsächlich ist das Gegenteil der Fall: Die Verwendung der break-Anweisung in der Schleife zum vorzeitigen Herausspringen führt dazu, dass das Programm den else-Block nicht ausführt , was für diejenigen, die es nicht kennen, etwas verwirrend ist mit for/else wird es für Leute, die den Code lesen, ziemlich verwirrend sein.
Zusammenfassung
Das obige ist der detaillierte Inhalt vonZusammenfassung mehrerer Fehler, die Python-Neulinge häufig machen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!