【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