【问题标题】:Python: access variable in a function in another filePython:访问另一个文件中函数中的变量
【发布时间】:2015-08-08 19:12:07
【问题描述】:

我有两个文件:

lib.py

global var
def test():
    var = "Hello!"
    return

test.py

from lib import *
test()
print(var)

但是尽管它们在同一个文件夹中,当我运行 test.py 时,我得到以下错误:

Traceback (most recent call last):
  File "C:\Test\test.py", line 5, in <module>
    print(var)
NameError: name 'var' is not defined

如何在另一个文件的函数中访问这个变量?

【问题讨论】:

  • 不使用全局变量,为什么不让那个函数返回一个值,你可以保存它?
  • 你不能访问函数中的变量,除非你返回它们什么的。

标签: python variables import global local


【解决方案1】:

您需要在它使用的范围内将变量声明为全局变量,在这种情况下是函数test()

def test():
  global var
  var = "Hello!"

请注意,最后的return 不是必需的,因为它隐含在函数的末尾。此外,var 是在模块的全局范围内声明的,因此 from lib import * 不会自动导入它,因为它是在导入模块之后创建的。

从函数返回var 可能是跨模块使用的更好解决方案:

def test():
  var = "Hello!"
  return var

var = test()
print(var) # Hello!

【讨论】:

    【解决方案2】:

    我推荐以下:

    lib.py

    def test():
        return "Hello!"
    

    test.py

    from lib import *
    var = test()
    print(var)
    

    【讨论】:

    • 感谢您的帮助!我明白你为什么这样做了,因为它更接近于变量的预期用途。但是,我应该解释的是,我上面概述的问题是一个简化版本。在一个文件中,我在一个函数中有 pygame 代码,例如:screen = pygame.display.set_mode((width, height)) 我试图通过在另一个文件中使用它来访问它:pygame.gfxdraw.aacircle(screen, 175, 130, 60, red_on) 因此,我认为我不能使用返回功能是否正确实现这一目标?
    • 好的,我测试了,结果你的解决方案仍然有效!谢谢!
    猜你喜欢
    • 1970-01-01
    • 2022-12-06
    • 1970-01-01
    • 2021-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-22
    相关资源
    最近更新 更多