回覆列表
  • 1 # 樂遊劉

    透過eval(“計算公式”)的方式算出來。如果運算子是比較特殊的運算子可以先進行一定的處理在透過eval計算出來。例如下圖的計算過程:

    eval可以很方便的將字串形式的表示式的值求出來。

    eval除了可以求運算表示式之外還可以進行程式的執行,比如以下內容:

    還可以巢狀執行很複雜的語句或者一些java之類的語句都可以,程式碼比較多這裡就不舉例了。

    當然,在使用eval的時候要注意表示式的內容,如果涉及到輸入的方式進行動態的計算的話,一定要判斷表示式的值,方式被透過注入方式執行惡意程式碼,造成危險。

  • 2 # 軟體測試開發技術棧

    Python eval方法可以實現上述需求,具體使用介紹如下。

    eval()方法介紹

    功能:將字串str當成有效的表示式來求值並返回計算結果。

    語法: eval(source[, globals[, locals]])

    引數

    source:必填,一個Python表示式的字串或者compile()返回的程式碼物件

    globals:非必填,必須是dictionary

    locals:非必填,任何對映物件,預設與globals引數一致

    程式碼實現

    如果globals,locals引數都不指定,表示式將在eval呼叫的環境中執行,即預設為globals()和locals()函式中包含的模組和函式,這就使得eval方法存在一定的安全風險。

    所以出於安全考慮,對字串進行型別轉換的時候,最好使用函式,而該模組下的函式,則會判斷需要計算的內容計算後是不是合法的python型別,如果是則進行運算,否則就不進行運算。

  • 中秋節和大豐收的關聯?
  • 有一首歌歌詞是你是我生命的終點,我想知道是什麼歌?