编程学习网 > 编程语言 > Python > python中eval函数什么时候用才能发挥出它的效果呢?
2021
09-04

python中eval函数什么时候用才能发挥出它的效果呢?

Python解释器内置了许多函数,这意味着我们无需定义,始终可以用它们。下面按照函数的字母顺序,讨论一些常用的内建函数。eval作为Python的一个内置函数,在实际工作中能够让你事半功倍,但是如果使用不恰当,则有可能会导致你的系统遭到破坏。本文就带大家来看看怎么用它


eval()函数解析传给它的表达式,并在程序中运行Python表达式(代码)。举个例子:


>>> x = 1

>>> eval("x + 1") # 注意:"x + 1"是字符串

2

>>> eval("4 < 9")

True

>>> eval("'py' * 3")

'pypypy'

>>> eval("10 ** 2")

100



eval()函数不仅仅能运行简单表达式,还能调用函数,使用方法等等:


>>> eval("abs(-11)") # 计算-11的绝对值

11

>>> eval('"hello".upper()') # 把字符串'hello'全变成大写字母

'HELLO'

>>> import os

>>> eval('os.getcwd()') # 获取当前的工作目录

'/home/thepythonguru'



但是需要注意的是eval()仅适用于表达式,尝试传递语句会导致语法错误:


>>> eval('a = 1') # 赋值语句

Traceback (most recent call last):

File "", line 1, in

File "", line 1

a = 1

^

SyntaxError: invalid syntax

>>> eval('import re') # 导入语句

Traceback (most recent call last):

File "", line 1, in

File "", line 1

import re

^

SyntaxError: invalid syntax



此外,使用eval()语句应该十分小心,永远不要将不受信任的源直接传递给eval()。 因为恶意用户很容易对您的系统造成破坏。 例如:


>>> eval(input()) # eval()将执行用户输入的代码

用户输入以下代码就能从系统中删除所有文件:

os.system("RM -RF /")

# 上面输入相当于执行:

>>> eval('os.system("RM -RF /")')

以上就是“”的详细内容,想要了解更多Python教程欢迎持续关注编程学习网


扫码二维码 获取免费视频学习资料

Python编程学习

查 看2022高级编程视频教程免费获取