【问题标题】:How to share global variables between files in Python like C如何在 Python 中的文件之间共享全局变量,如 C
【发布时间】:2020-06-03 14:20:37
【问题描述】:

我有 2 个文件

#foo.py
 global x
 def foo():
   x = 8


#main.py
from conf import *

 if __name__ == "__main__":
 foo()

如何在 main.py 文件中获取 X 值我必须在这里只使用 2 个文件 现在如果打印或存储 x 到其他变量它必须打印 8

【问题讨论】:

  • foo 没有分配给全局 x,因为它没有将 x 定义为全局。 foo 中的 xfoo 的本地变量。为了使它成为全局的,它需要在函数内部声明为全局的,而不是在函数外部。将全局声明移动到 foo 内部。
  • 我做了,但没有改变
  • 对于初学者,您必须在main.py 中输入某种形式的input foo。还是conffoo 的错字?
  • 嗯,这只是问题的一部分。尝试将导入更改为import foo,然后您可以执行foo.foo(),然后检查foo.x,您应该会看到它,前提是它是全局的(在发布的代码中它不是)。
  • -@TomKarzes 我们不能这样做会导致错误

标签: python extern


【解决方案1】:

如果您在 foo() 中将 x 声明为全局变量,您可以执行类似的操作来获取 main.py 中的变量 x,这意味着您将访问全局 x 而不是本地 x。

#foo.py
 x =10
def foo():
   x = 8
   print(" in foo x= " ,x)


#main.py
from conf import *
from foo import x, foo

if __name__ == "__main__":
   print(" x imported from foo.py  = ", x)
   foo()

输出

x imported from foo.py  =  10
in foo x=  8

【讨论】:

  • from foo import x, foo ModuleNotFoundError: No module named 'foo' 我得到了这个错误
  • 我可以在我的机器上成功运行这段代码,确保 foo.py 和 main.py 在同一个文件夹中
  • 但我需要 x 值 8 而不是 10
  • 那么你应该使用简单地在foo() 中添加一个return x 语句并在main.py 中调用foo 作为somevariable = foo() 现在这个变量将是x 的值,即8,你可以在 youe main.py 的任何地方使用它
  • 但是如果必须访问 foo 函数中的多个变量,例如 x = 8 和 y =15 在这个资历中,什么是解决方案
【解决方案2】:

你必须正确使用全局关键字

# foo.py
x = None

def foo():
    global x
    x = 8

#main.py
# this imports everything from foo in main
from foo import *

if __name__ == "__main__":
foo()
print(x)

【讨论】:

  • 如何访问 main.py 文件中的 x 值
  • 您使用 * 通配符从 foo 导入了所有内容,因此您可以在 main.py 中正常访问它。只需打印(x)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-03-28
  • 2013-12-09
  • 2019-08-17
  • 2021-03-08
  • 1970-01-01
  • 1970-01-01
  • 2013-06-04
相关资源
最近更新 更多