eval()函数和compile函数

>eval()函数

'''
eval()函数
1:eval函数可以动态的执行字符串定义的表达式
2:将字符串转换成其他序列结构
3:使用全局变量
'''
# 1动态的执行字符串定义的表达式
num=10
result=eval('num*9+1')
print(result)

#2将字符串转换成其他序列结构
list1=eval('[1,2,3,4,5,6,67]') #字符串转列表
tuple1=eval('(1,2,3,4,5)') #字符串转元祖
dict1=eval("{'key1':'valuses1','key2':'values2'}")

print(list1,tuple1,dict1)
#3使用全局变量  使用全局变量的时候,变量必须是个字典 , eval函数可以将字典的键值传入动态的字符串表达式中
global dict1
dict1={
    'num':10
}
a=eval('num*10',dict1)
print(a)
'''
exec()函数定义执行对行动态字符串表达式
'''
# exec('for i in range (1,10):'\
#                 'print(i)')
#compile() 函数

>compile函数

​ eval 函数和exec函数都是先编译在执行,这样会对程序性能影响,可以使用compile函数对字符串函数进行解析,程序将不会运行动态编译,而是直接执行编译好的对象

sta='10*9+1'
com=compile(sta,'',"eval")
print(eval(com))
posted @ 2022-04-11 23:43  饭兜  阅读(78)  评论(0编辑  收藏  举报