Python运行表达式

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

可以使用该方法代替

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

佐倉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值