加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

Python eval()函数

发布时间:2020-12-17 17:00:26 所属栏目:Python 来源:网络整理
导读:描述: Python eval()函数:将字符串str当成有效的表达式来求值并返回计算结果。 语法: eval()函数 语法: Python eval(str) 参数: str -- 变量 返回值 返回计算结果 注意 强大的函数有代价,安全性是其最大的缺点。 想一想这种使用环境:需要用户输入一个表达式

描述:

Python eval()函数:将字符串str当成有效的表达式来求值并返回计算结果。

语法:

eval()函数语法:

Python

eval(str)

参数:

  • str -- 变量


返回值

返回计算结果

注意

强大的函数有代价,安全性是其最大的缺点。

想一想这种使用环境:需要用户输入一个表达式,并求值。

如果用户恶意输入,例如:

__import__('os').system('dir')

那么eval()之后,你会发现,当前目录文件都会展现在用户前面。

那么继续输入:

open('文件名').read()

代码都给人看了。获取完毕,一条删除命令,文件消失。哭吧!

怎么避免安全问题?

1、自行写检查函数;

2、使用ast.literal_eval:

实例

以下实例展示了replace()函数的使用方法:

Python

#?-*-?coding:utf-8?-*-
a?=?'My?first?test?string'
b?=?'Another?test?string?that?i?have?defined'
math_string?=?'3+4*2'
expression_string?=?"a+'?'+b+'?tiger'"
print?"math_string计算值",eval(math_string)
#math_sting?=?"3+4*21"
print?"math_string计算值",eval(math_string+"1")
print?"expressiong_string计算的值",eval(expression_string)

以上实例输出结果如下:

math_string计算值?11
math_string计算值?87
expressiong_string计算的值?My?first?test?string?Another?test?string?that?i?have?defined?tiger


(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读