eval(字符串)
作用:执行一个字符串表达式(单行表达式,不能包含=)
例1:列表形式的字符串转为列表
l = "[1,4,6,8,0]"
print (eval(l))
[1, 4, 6, 8, 0]
例2:字典形式的字符串转为字典
l = "{\"t\":[1,4,6,8,0]}"
print (eval(l))
{'t': [1, 4, 6, 8, 0]}
例3:元组形式的字符串转为元组
l = "(1,4,6,8,0)"
print (eval(l))
(1, 4, 6, 8, 0)
例4:执行常规操作
x=1
y=3
c="x+y"
print (eval(c))
4
例5:执行函数
def m(x):
return x
print (eval("abs(-1)"))
print (eval("math.sqrt(9)"))
print (eval("m(9)"))
1
3.0
9
例6:利用循环批量执行函数名类似函数
def t1(x=1):
return x**x
def t2(x=2):
return x**x
def t3(x=3):
return x**x
def t4(x=4):
return x**x
def t5(x=5):
return x**x
def T(n=5):
list=[]
for i in range(1,n+1):
express = "t"+str(i)+"()"
result=eval(express)
list.append(result)
print (list)
T()
[1, 4, 27, 256, 3125]
exec(字符串)
作用:执行一个字符串表达式(多行表达式)
例1:表达式计算
code = 'a=1;b=2;c=a+b;print(c)'
exec(code)
3
例2:函数定义
code = 'def t(x):return x**x'
exec(code)
print(t(3))
27
例3:循环计算
code = 'for i in range(10):print(i)'
exec(code)
print(t(3))
0
1
2
3
4
5
6
7
8
9
例4:定义相似函数
n=10
list=[]
for i in range(n):
code = 'def t'+str(i)+'(x):return x**x'
compile_function = (exec(code))
run_function = (eval("t"+str(i)+"("+str(i)+")"))
list.append(run_function)
print (list)
result = t8(12)
print ((result))
[1, 1, 4, 27, 256, 3125, 46656, 823543, 16777216, 387420489]
8916100448256
说明:这里定义了t1()…t10(),十个函数;
例5:读取配置文件
这里不举例了
例6:正则表达式在界面上测试,运行结果
这里不举例了
例7:执行某个py文件
test.py
def add(a:"param")->"a**a":
return a**a
print (add(4))
256
with open('test.py','r') as f:
exec(f.read())
256
execfile(文件)
仅能在python2中使用,python3中弃用
python2
execfile("test.py")
256
python3
with open('test.py','r') as f:
exec(f.read())
256
可以使用该方法代替