在Matlab中,我可以编写一个程序调用保存到外部文件的子函数。在那个子函数中,我可以使用变量而不用在本地声明它们,只要它们已经在全局之前被定义。 python中的这种行为也可能吗?在类似于Matlab的Python中使用外部函数中的全局变量
一个例子是一个应该绘制一些东西的子函数。目前我路过numpy的(NP)和matplotlib(PLT)作为参数传递给该函数
def plot_weights(weights,session,np,plt):
...
上面的例子来自tensorflow教程,所以session
代表一个tensorflow会话。
是否可以这样定义
def plot_weights(weights):
...
的功能,使蟒蛇采取session
,np
,plt
一些全局变量?
您是否在寻找类似['global']的东西(http://stackoverflow.com/questions/423379/using-global-variables-in-a-function-other-than-the-one-that-created -他们)? – 2017-01-16 09:50:28
您正在倡导*命名空间污染*。当您尝试通过添加更多模块来扩展这个问题并且遇到名称冲突(使用相同名称的多个模块)时,问题就出现了。您必须跟踪每个模块中使用的所有名称,并且模块作者无法更改任何内容。你必须小心,不要在你自己的代码中使用这些名字。支持变成了一场噩梦,因为你不知道谁改变了什么,什么时候改变。它也杀死小猫。 – cdarke
根据下面给出的答案,'global'并不意味着整个模块都是全局的,所以我似乎无法真正绕过所有对象作为函数参数。在numpy和matplotlib的情况下,我认为我至少可以将它们导入到子函数本身中,而不是将它们作为参数传递给它们?这听起来像这个重装模块会很慢,但... – mcExchange