2017-11-03 1 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 

しかし2つの条件の違いは何であるPythonでのevalの入力フォーマット

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

を理解します。なぜキャラクターが必要ですか? ?

+4

Pythonシェルで 'a b c'と入力してみてください。それから '' a b c ''を試してください。 – miradulo

+0

1つは文字列リテラル(動作するもの)ですが、もう1つは構文エラーです...あなたは正確に何を得ていませんか? 'eval'はどうしていると思いますか? –

+0

また、 'eval(" 'a b c' ")'は完全に愚かです。単に '' 'a b c' "' –

答えて

0

eval("a = 5")は、Pythonコードとして文字列の内容を実行します。たとえば、eval("a = 5")を実行した後、変数aは値5を保持します。

eval("a b c")がエラーをスローし、eval("'a b c'")がなぜそうしないのかについては、Pythonのメソッド/クラスドキュメントの通常の規約は、複数行の文字列を使用することです。したがって、文字列はPythonで有効な文です。単一行のコメントにはまだ#を使用してください。

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 
関連する問題