Python3——使用exec和eval执行字符串及计算其结果


1.exec()将字符串作为代码运行

exec("print('hello,world')")
>>hello,world

exec函数主要用于动态地创建代码字符串。如果这种字符串来自其他地方,就几乎无法确定它将包含什么内容。因此为了安全起见,要提供一个字典以充当命名空间

命名空间:可以视为一个放置变量的地方,类似于一个看不见的字典。因此,当你执行语句x=1时,将在当前命名空间存储键x和值1。当前命名空间通常是全局命名空间,但也并非必然如此。

from math import sqrt
scope={}
exec('sqrt=1',scope)
sqrt(4)
>>2.0
scope['sqrt']
>>1

如此可见,可能带来破坏的代码并非覆盖函数sqrt。sqrt函数该怎样还怎样,而通过exec执行赋值语句创建的变量位于scope中。

2. eval()

eval是一个类似于exec的内置函数。 
exec执行一系列Python语句,而eval计算用字符串表示的Python表达式的值,并返回结果。(exec什么都不返回,因为它本身是条语句) 
与exec一样,也可以向eval提供一个命名空间。

eval(input("input an expression:"))
>input an expression:4+8
>12

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM