亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在Python中使用eval?

在Python中使用eval?

白衣非少年 2019-11-15 20:55:16
eval()我在玩耍時偶然發現了Python中的一個函數。我想不出需要此功能的情況,除了可能是語法糖。誰能舉一個例子?
查看完整描述

3 回答

?
慕俠2389804

TA貢獻1719條經驗 獲得超6個贊

eval并且exec是一種方便快捷的方法,可以動態地獲取一些源代碼,也許要稍加修改然后執行它-但是,它們從來都不是最好的方法,尤其是在生產代碼中,而不是“快速且臟”的原型&c。


例如,如果我不得不處理這樣的動態Python源代碼,那么我會使用ast模塊- ast.literal_eval比得多eval(如果它是一次性的,并且可以依賴于表達式的字符串形式,則可以直接以字符串形式調用它)僅在簡單常量上,或者node = ast.parse(source)先執行,然后進行node遍歷,也許與合適的訪問者一起對它進行修改,例如進行變量查找,然后literal_eval是節點)-或者,一旦將節點置于適當的形狀并對其進行安全性審查,我可以compile它(產生一個代碼對象)并以此構建一個新的函數對象。遠不那么簡單(除非與最簡單的情況ast.literal_eval一樣簡單eval!),但是在生產質量的代碼中更安全,更可取。


對于許多任務,我見過的人(AB-)的使用exec和eval對,Python的功能強大的內置插件,如getattr和setattr,索引到globals(),&C,提供最好而事實上往往簡單的解決方案。對于諸如JSON解析之類的特定用途,庫類json更好,例如(例如,請參見SilentGhost對耳鳴的評論)。等等...


查看完整回答
反對 回復 2019-11-15
?
森林海

TA貢獻2011條經驗 獲得超2個贊

在維基百科上的文章eval是非常翔實,并詳細介紹了各種用途。


它建議的一些用途是:


評估數學表達式

編譯器自舉

腳本(一般來說,動態語言非常適合)

語言導師


查看完整回答
反對 回復 2019-11-15
  • 3 回答
  • 0 關注
  • 637 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號