[英]Eval not working on multi-line string
我在使用 python eval 函數執行多行字符串時遇到問題/
code = '''
def main():
print "this is a test"
main()
'''
eval(code)
Traceback (most recent call last):
File "<pyshell#12>", line 1, in <module>
eval(code)
File "<string>", line 3
def main():
^
SyntaxError: invalid syntax
eval
只能評估Python表達式,而不是語句。 函數定義是語句,而不是表達式。
使用exec
執行 Python 語句。
請參閱頂級組件文檔,其中區分文件輸入和表達式輸入(除其他外):
file_input ::= (NEWLINE | statement)*
此語法用於以下情況:
[...]
- 解析傳遞給
exec
語句的字符串時;
和
[...]
eval()
的字符串參數必須具有以下形式:eval_input ::= expression_list NEWLINE*
不要使用此執行不可信的用戶提供的文本。 eval()
和exec
沒有防范惡意用戶,如果您使用它,它們可以並且將接管 Web 進程。
事實上,沒有“安全”的方法可以做到這一點,除了在所有服務都牢牢關閉的一次性虛擬機中運行代碼。 為新代碼運行一個新的虛擬機,完成或超時后丟棄整個虛擬機。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.