s="hello" print(eval(s))輸出結果為:
Traceback (most recent call last):
File "C:UsersmengmaDesktopdemo.py", line 2, in <module>
print(eval(s))
File "<string>", line 1, in <module>
NameError: name 'hello' is not defined
s="hello" print(eval('s'))輸出結果為:
hello
這種寫法是要 eval() 執行 "hello" 這句程式碼。這個 hello 是有引號的,在程式碼中代表字串的意思,所以可以執行。s='"hello"' #s 是個字串,字串的內容是帶引號的 hello print(eval(s))輸出結果為:
hello
這種寫法的意思是 s 是個字串,並且其內容是個帶引號的 hello。所以直接將 s 放入到函數 eval() 中也可以執行。s="hello" print(eval(repr(s))) #使用函數 repr() 進行轉化輸出結果為:
hello
s="hello" print(eval(str(s)))輸出結果為:
Traceback (most recent call last):
File "C:UsersmengmaDesktopdemo.py", line 2, in <module>
print(eval(str(s)))
File "<string>", line 1, in <module>
NameError: name 'hello' is not defined
s="hello" print(repr(s)) print(str(s))輸出結果為:
'hello'
hello
注意,在編寫程式碼時,一般會使 repr() 數來生成動態的字串,再傳入到 eval() 或 exec() 函數內,實現動態執行程式碼的功能。