首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将变量传入和传出exec?

如何将变量传入和传出exec?
EN

Stack Overflow用户
提问于 2021-04-27 07:24:03
回答 1查看 29关注 0票数 0

给定以下代码

代码语言:javascript
复制
a = 100
b = 200

snip = '''
c = a+b
'''

exec(snip)
print(c)

如何在不使用全局作用域的情况下将值传递到exec,并从exec中获取值?

换句话说,我不是在全局作用域中声明abc,而是如何像函数一样将ab传递到代码片段中,并获得结果c

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-27 07:24:03

通常,全局作用域与exec一起使用

代码语言:javascript
复制
a = 100
b = 200

snip = '''
c = a+b
'''

exec(snip)
print(c)

但是,在某些用例中,这可能会有问题。exec允许您传入定义全局范围的字典,并通过passing by assignment接收包含局部范围的字典。下面是一个例子:

代码语言:javascript
复制
snip = '''
c = a+b
'''

input_globals = {'a': 100, 'b': 2}
output_locals = {}

exec(snip, input_globals, output_locals)
print(output_locals)

这将产生以下输出:

代码语言:javascript
复制
{'c': 102}

这有效地允许人们在“功能上”使用exec,而无需处理和修改全局作用域。

你可以阅读this了解更多细节。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67274960

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档