python - 如何自动将变量传递出函数?如何将变量从内部传递到外部范围?
问题描述
我在 Python 和 Julia 中做了一个项目,并在函数中包含代码,例如(Julia 版本):
function foo(a,b)
c = a+b
#more code here
end
或(Python 版本)
def foo(a,b):
c=a+b
#more code here
然后我需要通过检查那里的变量值(在函数范围内)来测试这些函数。我想避免写print(variables)
或return variables
每次。有什么方法可以帮助我自动将所有变量传递到外部范围,以便开发环境以便我可以轻松检查它们?
解决方案
在 Julia 中,您可以使用Base.@locals
宏,例如:
function foo(a,b)
c = a+b
@show Base.@locals
end
Base.@locals
返回Dict
带有所有局部变量的 a ,我在这里使用@show
它来显示它。让我们运行一个测试:
julia> foo(10,15)
#= REPL[2]:3 =# Base.@locals() = Dict{Symbol, Any}(:a => 10, :b => 15, :c => 25)
Dict{Symbol, Any} with 3 entries:
:a => 10
:b => 15
:c => 25
在 Python 中有一个非常相似的locals()
函数,例如:
def foo(a,b):
c=a+b
print(locals())
现在让我们测试一下:
>>> foo(10,15)
{'a': 10, 'b': 15, 'c': 25}
如果您想将变量导出到 Julia 中的全局范围,您可以执行以下操作:
function foo(a,b)
c = a+b
Main.eval.(:($key = $value) for (key,value) in Base.@locals)
end
这会将 的值复制a,b,c
到Main
范围:
julia> foo(200,300);
julia> a,b,c
(200, 300, 500)
Python 没有元编程,但你可以这样做(@MisterMiyagi 建议):
globals().update(locals())
推荐阅读
- javascript - 在 HTML 和 javascript 中显示内容时如何强制换行
- c# - Kestrel 使用控制器方法返回 404 错误
- php - 在另一个类的上下文中将类型解析为其完全限定的类名(仅通过其名称)
- pandas - 如何通过检查包含在单元格元素中的列表来过滤 Pandas DataFrame 行?
- python - 从python中的数组中提取值
- node.js - 读写大文件时Node.js内存泄漏
- mysql - MySQL 中的子咨询
- splunk - splunk join 2 搜索查询
- pandas - 对于十六进制数,如何按位反转列中的每个值?
- ios - `hasAmbiguousLayout` 是真的,但 `exerciseAmbiguityInLayout()` 什么都不做?