python内置exec方法在函数内执行报错

def fun():
exec(‘b=1+1’)
print(b)
fun()
#执行时报变量b不存在
但将代码改为全局时不报错,即:
exec(‘b=1+1’)
print(b)
原因:
exec内的变量会在exec内声明为全局变量,但fun()内的变量为局部变量,对exec内的变量不可见
解决方法:
def fun()
lc=locals()
exec(‘b=1+1’)
b=lc[‘b’]
print(b)
fun()

你可能感兴趣的:(python)