Heim > Backend-Entwicklung > Python-Tutorial > Einige häufige Fehler in Python

Einige häufige Fehler in Python

Freigeben: 2020-06-16 15:53:11
nach vorne
3026 Leute haben es durchsucht

Einige häufige Fehler in Python

Häufige Fehler in Python:

0. Vergessen, Doppelpunkte

in if-, elif-, else-, for-, while-, class- und def-Anweisungen zu schreiben Das Vergessen, „

if spam == 42
    print('Hello!')
Nach dem Login kopieren

“ hinzuzufügen, führt später zu: SyntaxError: ungültige Syntax

2. Falsche Einrückung verwenden

Python verwendet Einrückungen, um Codeblöcke zu unterscheiden, häufige falsche Verwendungen:

print('Hello!')
    print('Howdy!')
Nach dem Login kopieren

führt zu: IndentationError: unerwarteter Einzug. Jede Codezeile im selben Codeblock muss eine konsistente Einrückung beibehalten

if spam == 42:
    print('Hello!')
  print('Howdy!')
Nach dem Login kopieren

Ursache: IndentationError: unindent stimmt mit keiner äußeren Einrückungsebene überein. Nachdem der Codeblock beendet ist, kehrt die Einrückung zur ursprünglichen Position

if spam == 42:
print('Hello!')
Nach dem Login kopieren

zurück, was zu Folgendem führt: IndentationError: erwarteter eingerückter Block, „:“ muss von Einrückung gefolgt werden

3. Die Variable ist nicht definiert

if spam == 42:
    print('Hello!')
Nach dem Login kopieren

Ergebnisse: NameError: Name 'Spam' ist nicht definiert

4. Beim Abrufen der Indexposition des Listenelements vergessen Sie, die len-Methode

< aufzurufen 🎜>Wenn Sie das Element über die Indexposition abrufen, vergessen Sie, die Len-Funktion zu verwenden, um die Länge der Liste abzurufen.

spam = [&#39;cat&#39;, &#39;dog&#39;, &#39;mouse&#39;]
for i in range(spam):
    print(spam[i])
Nach dem Login kopieren

führt zu: TypeError: range() Integer-Endargument erwartet, Liste erhalten.

Der richtige Ansatz ist:

spam = [&#39;cat&#39;, &#39;dog&#39;, &#39;mouse&#39;]
for i in range(len(spam)):
    print(spam[i])
Nach dem Login kopieren

Natürlich ist die pythonischere Art, es zu schreiben, so Verwenden Sie enumerate

spam = [&#39;cat&#39;, &#39;dog&#39;, &#39;mouse&#39;]
for i, item in enumerate(spam):
    print(i, item)
Nach dem Login kopieren

5. Ändern Sie die Zeichenfolge

String ist ein Sequenzobjekt, das das Abrufen von Elementen anhand des Index unterstützt, sich jedoch von Listenobjekten unterscheidet. Zeichenfolgen sind unveränderliche Objekte und unterstützen keine Änderung.

spam = &#39;I have a pet cat.&#39;
spam[13] = &#39;r&#39;
print(spam)
Nach dem Login kopieren

führt zu: TypeError: 'str'-Objekt unterstützt keine Elementzuweisung

Der richtige Ansatz sollte sein:

spam = &#39;I have a pet cat.&#39;
spam = spam[:13] + &#39;r&#39; + spam[14:]
print(spam)
Nach dem Login kopieren

6. String- und Nicht-String-Verkettung

num_eggs = 12
print(&#39;I have &#39; + num_eggs + &#39; eggs.&#39;)
Nach dem Login kopieren

Ursachen: TypeError: 'str'- und 'int'-Objekte können nicht verkettet werden

Wenn Strings mit Nicht-Strings verbunden werden, müssen Nicht-String-Objekte in String-Typen umgewandelt werden

num_eggs = 12
print(&#39;I have &#39; + str(num_eggs) + &#39; eggs.&#39;)
Nach dem Login kopieren

Oder verwenden Sie die formatierte Form der Zeichenfolge

num_eggs = 12
print(&#39;I have %s eggs.&#39; % (num_eggs))
Nach dem Login kopieren

7. Die Verwendung der falschen Indexposition

spam = [&#39;cat&#39;, &#39;dog&#39;, &#39;mouse&#39;]
print(spam[3])
Nach dem Login kopieren

führt zu: IndexError: Listenindex außerhalb des Bereichs

des Listenobjekts Der Index beginnt bei 0 und auf das dritte Element sollte mit spam[2] zugegriffen werden

8 Um einen nicht vorhandenen Schlüssel im Wörterbuch zu verwenden

spam = {&#39;cat&#39;: &#39;Zophie&#39;, &#39;dog&#39;: &#39;Basil&#39;, &#39;mouse&#39;: &#39;Whiskers&#39;}
print(&#39;The name of my pet zebra is &#39; + spam[&#39;zebra&#39;])
Nach dem Login kopieren

, um auf den Schlüssel im Wörterbuchobjekt zuzugreifen , Sie können [ ] verwenden, aber wenn der Schlüssel nicht vorhanden ist, führt dies zu Folgendem: KeyError: 'zebra'

Der richtige Weg sollte die Verwendung der get-Methode sein

spam = {&#39;cat&#39;: &#39;Zophie&#39;, &#39;dog&#39;: &#39;Basil&#39;, &#39;mouse&#39;: &#39;Whiskers&#39;}
print(&#39;The name of my pet zebra is &#39; + spam.get(&#39;zebra&#39;))
Nach dem Login kopieren

Wenn der Schlüssel ist nicht vorhanden, get gibt standardmäßig „Keine“ zurück

9. Die Verwendung von Schlüsselwörtern als Variablennamen

class = &#39;algebra&#39;
Nach dem Login kopieren

führt zu: SyntaxError: ungültige Syntax

Die Verwendung von Schlüsselwörtern als Variablennamen ist nicht möglich in Python erlaubt. Python3 hat insgesamt 33 Schlüsselwörter.

>>> import keyword
>>> print(keyword.kwlist)
[&#39;False&#39;, &#39;None&#39;, &#39;True&#39;, &#39;and&#39;, &#39;as&#39;, &#39;assert&#39;, &#39;break&#39;, &#39;class&#39;, &#39;continue&#39;, &#39;def&#39;, &#39;del&#39;, &#39;elif&#39;, &#39;else&#39;, &#39;except&#39;, &#39;finally&#39;, &#39;for&#39;, &#39;from&#39;, &#39;global&#39;, &#39;if&#39;, &#39;import&#39;, &#39;in&#39;, &#39;is&#39;, &#39;lambda&#39;, &#39;nonlocal&#39;, &#39;not&#39;, &#39;or&#39;, &#39;pass&#39;, &#39;raise&#39;, &#39;return&#39;, &#39;try&#39;, &#39;while&#39;, &#39;with&#39;, &#39;yield&#39;]
Nach dem Login kopieren

10. Die lokale Variable in der Funktion wird vor der Zuweisung verwendet.

someVar = 42

def myFunction():
    print(someVar)
    someVar = 100

myFunction()
Nach dem Login kopieren

führt zu: UnboundLocalError: Lokale Variable 'someVar', auf die vor der Zuweisung verwiesen wird

Wenn eine globale Variable vorhanden ist Funktion in der Funktion Wenn es eine Variable mit demselben Namen in der Domäne gibt, wird nach der Variablen in LEGB-Reihenfolge gesucht. Wenn eine Variable mit demselben Namen auch im lokalen Bereich innerhalb der Funktion definiert ist, wird nicht gesucht der äußere Geltungsbereich.

Daher ist someVar in der Funktion myFunction definiert, sodass print(someVar) nicht mehr außerhalb danach sucht, aber der Variablen wurde beim Drucken kein Wert zugewiesen, sodass UnboundLocalError

11 angezeigt wird ., verwenden Sie Selbstinkrementierung „++“ und Selbstdekrementierung „--“

spam = 0
spam++
Nach dem Login kopieren

Haha, es gibt keine Selbstinkrementierungs- und Selbstdekrementierungsoperatoren in Python, wenn Sie von C oder Java wechseln. Du solltest aufpassen. Sie können „+=" anstelle von „++" verwenden

spam = 0
spam += 1
Nach dem Login kopieren

12. Ein falscher Aufruf der Methode in der Klasse

class Foo:
    def method1():
        print(&#39;m1&#39;)
    def method2(self):
        print("m2")

a = Foo()
a.method1()
Nach dem Login kopieren
führt zu: TypeError: method1() benötigt 0 Positionsargumente, aber 1 wurde angegeben

Methode1 ist eine Mitgliedsmethode der Klasse Foo. Der Aufruf von a.method1() entspricht dem Aufruf von Foo.method1(a), aber Methode1 akzeptiert keine Parameter. es wird also ein Fehler gemeldet. Die richtige Aufrufmethode sollte Foo.method1() sein.

Weitere Informationen zu diesem Thema finden Sie in der Spalte

Python-Video-Tutorial

Das obige ist der detaillierte Inhalt vonEinige häufige Fehler in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:juejin.im
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage