python eval和exec使用

# eval 计算字符串表达式并返回,做些简单的操作
# 若globals存在则使用globals
# 若locals存在则优先使用locals

a = 10
def eval_test():
    b = 20
    c = eval('a+b')
    print("c:", c)
    
    c = eval('a+b', {"a":1, "b":2})
    print("c:", c)
    
    # locals优先使用
    c = eval('a+b', {"a":1, "b":2}, {"a":3, "b":4})
    print("c:", c)
    
    print("a:", a, "b:", b)
    
    
eval_test()
# c: 30      
# c: 3       
# c: 7       
# a: 10 b: 20

class Test:
    def __init__(self, name):
        self.name= name
        
# 使用字符串构造类的对象
t = eval("Test('hello')")
print(t.name) # hello


# exec不会返回,会运行并保留上下文
a = 10
# 单条执行对象
b = exec("a=a+2")
print("a:", a) # 12
print("b:", b) # None

# 多条执行对象,以\n进行换行
exec("b=[]\nb.append(2)\nprint(b)") # [2]
print(b) # [2]
exec("t=Test('world')\nprint(t.name)") # world
print(t.name) # world
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值