在Python中无法识别全局变量

2024-04-24 09:50:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我试过的:

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”函数中选择的文件路径?在


Tags: csv函数inselfeventfordefopen
2条回答

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

fn = 2

def func():
    global fn

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

最好:

^{pr2}$

除非你绝对需要

如果坚持将fn作为全局变量,为什么不在模块中定义{}:

# Somewhere in the same .py module
fn = None   

def mnuRead(self, event):
    # Modify fn

def btnHDI(self, event):
    # Read fn

相关问题 更多 >