给定以下代码
a = 100
b = 200
snip = '''
c = a+b
'''
exec(snip)
print(c)如何在不使用全局作用域的情况下将值传递到exec,并从exec中获取值?
换句话说,我不是在全局作用域中声明a、b和c,而是如何像函数一样将a和b传递到代码片段中,并获得结果c
发布于 2021-04-27 07:24:03
通常,全局作用域与exec一起使用
a = 100
b = 200
snip = '''
c = a+b
'''
exec(snip)
print(c)但是,在某些用例中,这可能会有问题。exec允许您传入定义全局范围的字典,并通过passing by assignment接收包含局部范围的字典。下面是一个例子:
snip = '''
c = a+b
'''
input_globals = {'a': 100, 'b': 2}
output_locals = {}
exec(snip, input_globals, output_locals)
print(output_locals)这将产生以下输出:
{'c': 102}这有效地允许人们在“功能上”使用exec,而无需处理和修改全局作用域。
你可以阅读this了解更多细节。
https://stackoverflow.com/questions/67274960
复制相似问题