【问题标题】:Global variable not recognized in PythonPython中无法识别的全局变量
【发布时间】:2014-10-26 02:17:50
【问题描述】:

我尝试过的:

def mnuRead(self, event):

    global fn
    dialog = wx.FileDialog(None, "Choose a file", os.getcwd(), "", "*.*", wx.OPEN)

    if dialog.ShowModal() == wx.ID_OK:
        countrylist = []
        fn = dialog.GetPath()
        fh = open(fn, "r") 
        csv_fh = csv.reader(fh)
        for row in csv_fh:
            countrylist.append(row)
        fh.close()
        for rows in countrylist:
            self.myListCtrl.Append(rows)

def btnHDI(self, event):

    myfile = open(fn, "rb")

在我的第一个函数中,我提示用户打开他们选择的文件。我有一个声明,然后将一个全局变量分配给“fn”。

当我在我的 btnHDI 函数中调用“fn”时,Python 说 fn 是“未定义的”。

我做错了什么?这不是正确使用全局变量吗?如何在所有其他功能中使用用户在“mnuRead”功能中选择的文件路径?

【问题讨论】:

标签: python variables global filepath


【解决方案1】:

如果您坚持将fn 作为一个全局变量,为什么不在模块中定义fn

# Somewhere in the same .py module
fn = None   

def mnuRead(self, event):
    # Modify fn

def btnHDI(self, event):
    # Read fn

【讨论】:

  • Python 现在已经正确识别了它,但是当我在 btnHDI 中读取 fn 时,它并没有像我的 mnuRead 函数那样返回一个字符串。不知道为什么?
【解决方案2】:

你需要把fn放在函数里面和外面

fn = 2

def func():
    global fn

您可以在函数中读取全局变量,但不能更改它;除非您在函数中尝试更改变量时在变量前面使用 global,否则 python 会自动将其设为本地。

最好:

fn = func():
    return value to fn

除非你绝对需要它

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-27
    • 1970-01-01
    • 1970-01-01
    • 2018-03-11
    • 2020-06-11
    相关资源
    最近更新 更多