全局变量在Python中无法识别

时间:2014-10-26 02:17:51

标签: python variables global filepath

我尝试过:

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”函数中使用用户在我所有其他函数中选择的文件路径?

2 个答案:

答案 0 :(得分:4)

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

# Somewhere in the same .py module
fn = None   

def mnuRead(self, event):
    # Modify fn

def btnHDI(self, event):
    # Read fn

答案 1 :(得分:1)

您需要同时在函数中放入fn

fn = 2

def func():
    global fn

您可以在函数中读取全局变量,但是不能更改它;除非您尝试在函数中更改变量,否则python会自动将其设置为局部变量。

更好:

fn = func():
    return value to fn

除非您绝对需要