wangjuju123

2018-10-23   阅读量: 615

数据分析师 Python编程

python错误解析(二)

扫码加入数据分析学习群

代码如下:

>>> from math import sqrt  
>>> exec "sqrt = 1"
>>> sqrt(4)

Traceback (most recent call last):
File "<pyshell#22>", line 1, in <module>
sqrt(4)
TypeError: 'int' object is not callable

【错误分析】exec语句最有用的地方在于动态地创建代码字符串,但里面存在的潜在的风险,它会执行其他地方的字符串,在CGI中更是如此!比如例子中的sqrt = 1,从而改变了当前的命名空间,从math模块中导入的sqrt不再和函数名绑定而是成为了一个整数。要避免这种情况,可以通过增加in <scope>,其中<scope>就是起到放置代码字符串命名空间的字典。

复制代码

代码如下:

>>> from math import sqrt  
>>> scope = {}
>>> exec "sqrt = 1" in scope
>>> sqrt(4)
2.0
添加CDA认证专家【维克多阿涛】,微信号:【cdashijiazhuang】,提供数据分析指导及CDA考试秘籍。已助千人通过CDA数字化人才认证。欢迎交流,共同成长!
0.0000 0 1 关注作者 收藏

评论(0)


暂无数据

推荐课程

推荐帖子