Python教程 – eval 和 exec

本篇教程将介绍Python两个特殊的内置函数:eval()和exec()。通过这两个函数,可以将字符串转换成可执行的代码,进一步结合其他代码进行使用。

eval()

eval()可以输入一行字符串,并将输入的字符串转换成可执行的代码后执行。eval()不能进行复杂的逻辑运算,例如赋值操作、循环等。eval()有三个参数:

参数 说明
expression 输入的字符串
globals 输入字符串中使用的全局变量,使用字典类型,默认为 None
locals 输入字符串中使用的局部变量,使用字典类型,默认为 None

下面的例子执行后,效果等同于print(“hello”)

eval('print("hello")')    # hello ( 等同 print("hello") )

下面的例子额外设置了globals和locals参数,会依次覆盖掉a、b、c的内容,globals和locals参数并不代表真正的变量,只有在eval()运算时才有效,运算之后就失效。

a, b, c = 1, 2, 3
eval('print(a, b, c)')                            # 1, 2, 3
eval('print(a, b, c)', {'a':4, 'b':5, 'c':6})     # 4, 5, 6
eval('print(a, b, c)', {'a':4, 'b':5, 'c':6}, {'a':7, 'b':8, 'c':9})   # 7, 8, 9
eval('print(a, b, c)')   # 1, 2, 3

此外,使用eval()可以返回计算的结果,下面的例子,会以x等于1、y等于2进行计算,返回x+y的结果。

a = eval('x+y',{'x':1,'y':2})
print(a)       # 3

虽然eval()非常方便好用,但相对有使用上的风险,因为eval()会将字符串转换成代码执行,如果应用在input,就可以输入类似“系统指令”的方法,操控系统的文件,例如下面代码执行后,会执行用户输入的代码, 这时如果输入了类似’import os; os.system(‘rm 123.txt’)’的代码,就会删除电脑中的某个文件。

eval(input())

exec()

exec()可以输入多行字符串,并将输入的字符串转换成可执行的代码后执行,exec()可以进行较为复杂的逻辑运算,例如赋值操作、循环等。exec()有三个参数:

参数 说明
object 输入的字符串
globals 输入字符串里使用的全局变量,使用字典类型,默认 None
locals 输入字符串里使用的局部变量,使用字典类型,默认 None

下面的例子执行后,效果等同于执行一个for循环,打印出0到9。

exec('''
for i in range(10):
    print(i)
''')

exec()无法像eval()那样返回结果,如果使用返回的方式,只会返回None。

a = exec('x+y',{'x':1,'y':2})
print(a)     # None

原创文章,作者:guozi,如若转载,请注明出处:https://www.sudun.com/ask/78932.html

(0)
guozi's avatarguozi
上一篇 2024年5月30日 下午2:31
下一篇 2024年5月30日 下午2:36

相关推荐

  • 如何选择适合自己的租网站服务器?(附详细步骤)

    你是否正在寻找适合自己的租网站服务器?或许你对网站服务器还不太了解,但它却是建立和运行网站的重要基础。那么,什么是网站服务器?它又有什么作用?如何选择适合自己的租网站服务器?今天,…

    行业资讯 2024年4月18日
    0
  • ip被墙了什么意思,被墙ip复活

    4. 技术问题:IP 封堵也可能是由于技术问题造成的。例如,您的IP可能因服务器故障或网络拥塞而暂时被封锁。 5. 地理位置限制:某些在线服务,例如视频和音乐,在某些国家或地区有版…

    行业资讯 2024年5月7日
    0
  • dnssec防污染,把dns改成什么好

    操作系统和浏览器也会缓存DNS解析结果,因此及时更新操作系统和浏览器可以帮助您避免恶意域名污染攻击。同时,更新您的操作系统和浏览器可能会修复一些已知的漏洞并提高您的网络安全。 6.…

    行业资讯 2024年5月17日
    0
  • seo软件推荐

    想要在网络世界中获得更多的曝光,SEO软件是必不可少的工具。但是市面上千千万万的SEO软件,让人眼花缭乱,如何选择一款适合自己的软件?这就需要我们了解什么是SEO软件、它的作用和优…

    行业资讯 2024年4月9日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注