Heim  >  Artikel  >  Backend-Entwicklung  >  Zusammenfassung mehrerer Fehler, die Python-Neulinge häufig machen

Zusammenfassung mehrerer Fehler, die Python-Neulinge häufig machen

Y2J
Y2JOriginal
2017-04-20 09:11:021800Durchsuche

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=&#39;Hi&#39;
b=&#39;Hi&#39;
print(a is b)
>>>True
print(a==b)
>>>True #看起来is和==好像是一样的

Schauen wir uns das noch einmal an. Zweites Beispiel:


str1=&#39;Wo shi yi ge chi huo&#39;
str2=&#39;Wo shi yi ge chi huo&#39;
print(str1 is str2)
>>>False#is的结果是False
print(str1==str2)
>>>True #==的结果为True,看二者不一样了吧

Drittes Beispiel:


str3=&#39;string&#39;
str4=&#39;&#39;.join([&#39;s&#39;,&#39;t&#39;,&#39;r&#39;,&#39;i&#39;,&#39;n&#39;,&#39;g&#39;])
print(str3)
>>>string
print(str3 is str4)
>>>False #is的结果是False
print(str3==str4)
>>>True #==的结果为True,看二者不一样了吧
Hier kann man Anfänger leicht verwirren. Es fühlt sich seltsam an, warum die Ergebnisse von is und == manchmal gleich und manchmal unterschiedlich sind

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 der

Speicherplatzid() des Objekts derselbe ist, ob es dieselbe Raumadresse verwendet, und

==

soll vergleichen Zusammenfassung mehrerer Fehler, die Python-Neulinge häufig machen 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=&#39;test&#39;,&#39;string&#39;,&#39;connection&#39;
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=&#39;test &#39;,&#39;string &#39;,&#39;connection&#39;
print(&#39;&#39;.join([str1,str2,str3]))
>>>test string connection

4. Schreiben Sie nicht nach for- und while-Schleifen, else block

long_str_list=[&#39;This is a long string&#39; 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(&#39;Loop %d&#39;%i)
else:
 print(&#39;Else block&#39;)
>>>Loop 0
>>>Loop 1
>>>Loop 2
>>>Else block
  • Hier liegt das Problem: Programmierer, die neu in Python sind, interpretieren den else-Block in der for/else-Struktur möglicherweise wie folgt:

    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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn