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

Einige häufige Fehler in Python

尚
nach vorne
2020-06-16 15:53:112993Durchsuche

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!')

“ 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!')

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

if spam == 42:
    print('Hello!')
  print('Howdy!')

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!')

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!')

Ergebnisse: NameError: Name 'Spam' ist nicht definiert

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

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

spam = ['cat', 'dog', 'mouse']
for i in range(spam):
    print(spam[i])

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

Der richtige Ansatz ist:

spam = ['cat', 'dog', 'mouse']
for i in range(len(spam)):
    print(spam[i])

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

spam = ['cat', 'dog', 'mouse']
for i, item in enumerate(spam):
    print(i, item)

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 = 'I have a pet cat.'
spam[13] = 'r'
print(spam)

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

Der richtige Ansatz sollte sein:

spam = 'I have a pet cat.'
spam = spam[:13] + 'r' + spam[14:]
print(spam)

6. String- und Nicht-String-Verkettung

num_eggs = 12
print('I have ' + num_eggs + ' eggs.')

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('I have ' + str(num_eggs) + ' eggs.')

Oder verwenden Sie die formatierte Form der Zeichenfolge

num_eggs = 12
print('I have %s eggs.' % (num_eggs))

7. Die Verwendung der falschen Indexposition

spam = ['cat', 'dog', 'mouse']
print(spam[3])

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 = {'cat': 'Zophie', 'dog': 'Basil', 'mouse': 'Whiskers'}
print('The name of my pet zebra is ' + spam['zebra'])

, 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 = {'cat': 'Zophie', 'dog': 'Basil', 'mouse': 'Whiskers'}
print('The name of my pet zebra is ' + spam.get('zebra'))

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

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

class = 'algebra'

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)
['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']

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

someVar = 42

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

myFunction()

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++

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

12. Ein falscher Aufruf der Methode in der Klasse

class Foo:
    def method1():
        print('m1')
    def method2(self):
        print("m2")

a = Foo()
a.method1()

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:juejin.im. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen