美文网首页
eval函数

eval函数

作者: 梅花九弄丶 | 来源:发表于2019-02-14 10:04 被阅读0次
  • 函数定义:

eval(expression,globals=None,locals=None)
将字符串str当成有效的表达式来求值并返回计算结果。globals和locals参数是可选的,如果提供了globals参数,那么它必须是dict类型;如果提供了locals参数,那么它可以是任意的map对象。
python的全局名字空间存储在globals()的dict对象中;局部名字空间存储在一个叫locals()的dict对象中,print(locals())来查看该函数体内的所有变量名和变量值。

  • Python版本兼容

Python2.7
Python3.x

  • eval()主要作用:

1)在编译语言里要动态地产生代码,基本上是不可能的,但是动态语言是可以的,意味着软件已经部署到服务器上了,但只要做很少的更改,只好直接修改这部分代码,就可以立即实现变化,不需要整个软件进行重新加载。
2)在在machin learning里根据用户使用这个软件频率,以及方式,可动态地修改代码,适应用户的变化。

  • 例子1:
a=1
g={'a':20}
eval("a+1",g)

结果:

  • 例子2, 测试globals, locals

x = 1
y = 1
num1 = eval("x+y")
print (num1)
def g():    
    x = 2    
    y = 2  
    num3 = eval("x+y")    
    print (num3)        
    num2 = eval("x+y",globals())   
    #num2 = eval("x+y",globals(),locals())    
    print (num2)
     
g()

num1的值是2;num3的值也很好理解,是4;num2的值呢?由于提供了globals()参数,那么首先应当找全局的x和y值,也就是都为1,那么显而易见,num2的值也是2。如果注释掉该句,执行下面一句呢?根据第3)点可知,结果为4

  • 安全问题:

因为eval的特型, 很可能被黑客利用,造成安全问题。

怎么避免安全问题?

1、自行写检查函数;

2、使用ast.literal_eval代替

相关文章

  • PHP代码执行

    Eval函数介绍 Eval函数的语法如下: eval ( string $code ) $code是字符串型变量,...

  • 08.eval、exec和其他函数

    eval、exec和其他函数 一、eval函数 1). eval函数的功能 将字符串形式的变量转换成Python的...

  • 二级Python小知识点---eval函数的功能

    eval函数的功能: eval函数的参数必须是字符串。所以经常和input联合使用。 eval函数的功能,通俗的说...

  • PHP代码审计-常见危险函数

    PHP代码执行函数 eval & assert & preg_replace eval 函数 php官方手册:ht...

  • eval介绍

    eval 的定义和用法 如果参数是表达式,eval()函数会执行表达式;如果参数是 js 语句,eval()函数会...

  • JS之eval()

    Javascript 之 eval() 语法 eval(string) 描述 eval()是一个顶级函数并且跟任何...

  • Python语法之eval()函数

    eval()函数 python中的eval()函数就是实现list、dict、tuple与str之间的转化;str...

  • 函数定义,函数劫持,全局函数

    函数的定义 函数劫持 全局函数(掌握isNaN eval)

  • R|Rmarkown查漏补缺

    1. 代码块设置 核心函数:eval eval = TRUE,显示运行结果,默认值 eval = FALSE,不显...

  • eval函数

    一,eval函数 1,函数原型 2,作用把字符串作为PHP代码执行 3,注意事项 代码不能包含打开/闭合PHP t...

网友评论

      本文标题:eval函数

      本文链接:https://www.haomeiwen.com/subject/nkuseqtx.html