【Python】eval函數



eval函數比較強大,能夠把 字符串當成 有效表達式來求值並返回計算結果

注:以下代碼是在IPython中運行的結果

# 基本的數學計算
In [1]: eval("1 + 1")
Out[1]: 2

# 字符串重復
In [2]: eval("'-' * 20")
Out[2]: '--------------------'

# 將字符串轉化為列表
In [3]: type(eval("[1,2,3]"))
Out[3]: list

# 將字符串轉化為字典
In [4]: type(eval("{'name':'Zhangsan','age':23}"))
Out[4]: dict

01.不要濫用eval

在開發的時候千萬不要使用eval直接轉換input的結果
具體的原因是:

__import__('os').system('ls')

等價於:

import os
os.system("ls")

執行成功,則返回0
執行失敗,則返回錯誤信息

02.案例說明

input_str = input("請輸入一道算術題:")
print(input_str+"的結果是:", eval(input_str))

程序運行后,輸入代碼:__import__('os').system('cat Demo3.py')后可以查看整個Demo3.py文件的內容,這就存在風險了。有可能代碼被人看完后,直接被rm -f Demo3.py 刪除了。如果遇到惡意黑客,並且服務器是Linux服務器,直接使用 rm -rf / ,那就真的是沒戲了,一切都完了!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM