簡體   English   中英

評估不適用於多行字符串

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM