eval在python中的意思例子,python中eval的用法例子

  eval在python中的意思例子,python中eval的用法例子

  Eval是Python的内置函数,返回传入字符串的表达式结果。想象一下,当变量被赋值时,将等号右边的表达式写成

  字符串格式,把这个字符串作为eval的参数,eval的返回值就是这个表达式的结果。

  python中eval函数的使用非常灵活,但也非常危险,安全性是它的劣势。本文从灵活性和危险性两个方面介绍了eval。

  1.力量

  举几个例子感受一下字符串和列表,元组和字典之间的转换。

  a=[[1,2]、[3,4]、[5,6]、[7,8]、[9,0]]

  b=评估值(a)

  b

  Out[3]:[[1,2]、[3,4]、[5,6]、[7,8]、[9,0]]

  类型(b)

  out[4]:列表

  a={1:a ,2:b}

  b=评估值(a)

  b

  Out[7]:{1:a ,2:b}

  类型(b)

  out[8]:

  a=([1,2],[3,4],[5,6],[7,8],(9,0))

  b=评估值(a)

  b

  Out [11] : ([1,2]、[3,4]、[5,6]、[7,8]、[9,0])。要强大,给eval一个字符串,eval会给你一个表达式返回值。

  eval的语法格式如下:

  Eval(表达式[,全局[,区域]])表达式:字符串

  Globals:变量范围、全局名称空间(如果提供)必须是字典对象。

  Locals:变量作用域、本地名称空间(如果提供的话)可以是任何映射对象。

  结合全局和局部来看几个例子。

  传递的全局参数值是{"age" :1822},

  Eval ({name : Linux , age 3360age} ,{age 33601822})输出结果

  {name : Linux , age 33601822}加上本地变量

  年龄=18岁

  Eval ({name : Linux , age 3360age} ,{age 33601822},locales())根据上面两个例子,我们可以看出globals参数中是否有变量,并在locals参数为空而globals参数不为空的情况下进行计算。

  当两个参数都不为空时,首先查找locales参数,然后查找globals参数。局部变量参数中同名的变量将覆盖全局变量中的变量。

  2.危险的地方

  Eval方便,但要注意安全性。我们可以把字符串转换成表达式执行,然后可以执行系统命令,删除文件。

  假设用户恶意输入。例如:

  eval(__import__(os )。system( ls/home/python tab.com/www/))

  然后在eval()之后,你会发现当前文件夹文件显示在用户面前。其实这句话相当于处决

  OS . system( ls/home/python tab.com/www/)

  然后继续输入:

  eval(__import__(os )。system( cat/home/python tab.com/www/test . SQL ))

  所有代码都已显示。

  再执行一次删除命令,文件就会消失。例如

  eval(__import__(os )。系统( RM/home/python tab.com/www/test . data ))

  所以在使用eval的时候,不仅要享受它的灵活性,还要注意安全性。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: