2013-05-16 6 views
7

Ist es möglich, Methoden innerhalb von interaktivem Python zu testen und leere Zeilen darin zu behalten?Konfigurieren von interaktivem Python, um Leerzeilen innerhalb von Methoden zuzulassen

def f1(): 
    import random 
    import time 

    time.sleep(random.randint(1, 4)) 

Dies gibt dem bekannten Fehler

IndentationError: unexpected indent 

Also, ja eine Abhilfe ist alle Leerzeilen innerhalb von Funktionen zu entfernen. Ich würde gerne wissen, ob das wirklich notwendig ist, um im interaktiven Modus/REPL laufen zu können.

dank

+0

Warum müssen Sie im Interpreter leere Zeilen hinzufügen? Kopieren und einfügen? Mit Interpreter nehme ich an, du meinst interaktive Python. – SethMMorton

+0

Ich denke, Sie haben Leerzeichen Probleme @ FogleBird zeigt richtig, sauber Whitespaces und weiter mit leeren Zeilen keine Probleme. Sie können statische Analysewerkzeuge wie "pep8" verwenden, die möglicherweise die Warnung für zusätzliche Leerräume anzeigen. –

+1

@SethMMorton; Ich korrigierte Frage, um Verbage "interactive python" zu verwenden. – javadba

Antwort

8

Könnte nicht viel helfen, aber es funktioniert, wenn die Leerzeilen eingerückt sind. Punkte für Klarheit gezeigt:

def f1(): 
....import random 
....import time 
.... 
....time.sleep(random.randint(1, 4)) 
+0

Sogar ein einzelnes Leerzeichen auf den Leerzeilen funktioniert; Sie benötigen nicht die vollständige Einrückung. – geoffspear

+1

Ich habe Einzelplatz hinzugefügt und ja das funktioniert. Danke! Übrigens, wenn Sie denken, dass dies eine vernünftige Frage für mich wäre, würden Sie die Frage abstimmen? Danke – javadba

0

Eine Option, vor allem für die Kopie-Einfügen von Code in den interaktiven Interpreter, ist es in einem rohen Stringliteral und exec es einzubetten:

exec(r''' 
def f1(): 
    import random 
    import time 

    time.sleep(random.randint(1, 4))''') 

Wenn der Code, den Sie 're-Eingabe verwendet bereits ''' Strings, umgeben Sie es stattdessen mit r"""...""" Anführungszeichen. Wenn es bereits ''' und """ verwendet, wird dies nicht funktionieren.

Verwandte Themen