2017-11-03 4 views
-1
str = "a b c" 
eval(str) # throws error 
Traceback (most recent call last): 
File "<stdin>", line 1, in <module> 
File "<string>", line 1 
a b c 
^
SyntaxError: invalid syntax 

aberdas Eingabeformat von eval in Python zu verstehen

str = "\'a b c\'" 
eval(str) # prints 
'a b a' 

Was ist der Unterschied zwischen den zwei Bedingungen ist. Warum wird das Zeichen benötigt? ?

+4

Versuchen Sie, 'a b c' in eine Python-Shell einzugeben. Dann probiere "a b c". – miradulo

+0

Eins ist ein String-Literal (das eine, das funktioniert) das andere ist ein Syntaxfehler ... was bekommen Sie nicht genau? Was glaubst du, was eval ist? –

+0

Beachten Sie auch, 'eval ('' a b c '')' ist total albern. Verwenden Sie einfach "" 'a b c' "' –

Antwort

0

eval("a = 5") führt den Inhalt der Zeichenfolge als Python-Code aus. Nach der Ausführung von eval("a = 5") würde die Variable a beispielsweise den Wert 5 enthalten.

Warum eval("a b c") löst einen Fehler und eval("'a b c'") nicht, ist die übliche Konvention für Methode/Klasse Dokumentation in Python, eine mehrzeilige Zeichenfolge zu verwenden. Als solche sind Strings gültige Anweisungen in Python. Beachten Sie, dass Sie weiterhin für einzeilige Kommentare verwenden sollten.

def method_a(str): 
    """ 
    This method does blah blah blah. 
    input: 
     <str> str The string to be processed 
    """ 
    if str is None: 
     # avoid null errors. 
     return "" 
    else: 
     return str