从python空闲的main方法访问变量

Posted

技术标签:

【中文标题】从python空闲的main方法访问变量【英文标题】:accessing variables from main method in python idle 【发布时间】:2015-08-12 17:28:27 【问题描述】:

所以我知道如果我创建一个没有声明 main 方法的 python 文件然后我运行它,我可以从空闲访问该文件中的变量,但是如果我声明了一个 main 方法,那么我不能在 main 方法完成运行后,从空闲访问任何变量。

有谁知道是否有一种解决方法,我可以在我的 python 程序中使用方法,同时还可以在空闲时从它们中访问变量?

【问题讨论】:

这不需要解决方法,因为它需要scope 的知识。 您可以使用该页面左上角的下拉菜单访问the 2.7 version,其文本完全相同。 【参考方案1】:

如果您在方法/函数内声明变量,则它们仅在该方法或函数的生命周期内。您无法从外部访问它们。如果您希望某个变量可用,您可以在全局空间中声明它,然后像导入任何其他函数/类一样导入。

file1.py

some_var = whatever

def foo():
    another_var = 42

def bar():
    return 42

file2.py

from file1 import some_var

将为您提供some_var 的访问权限,但您将无法访问another_var,除非您从您的函数返回并像这样保存

from file1 import bar

another_var = bar()

您可以在函数运行时访问函数中的变量,方法是使用 pdb 库,如下所示:

>>> def foo(x):
    import pdb; pdb.set_trace()  # this is one of the rare times it's okay to import inside a function
    return x* 2

>>> foo(5)
> <pyshell#13>(3)foo()
(Pdb) x
5
(Pdb)

pdb 是一个非常有用的调试工具。如果您开始得到一些奇怪的输出,它将帮助您查看函数内部发生的 id。你可以阅读更多关于它here

【讨论】:

以上是关于从python空闲的main方法访问变量的主要内容,如果未能解决你的问题,请参考以下文章

C++:从函数访问主变量的最简单方法?

Main() 不想访问类变量

如何将变量从 PyQt5 UI 返回到 Main 函数 - Python

Swift 4:从 DispatchQueue.main(范围)访问变量

main 静态方法 非静态方法

如何从其他方法访问主方法内的数组或变量?