簡體   English   中英

Python無法識別全局變量

[英]Global variable not recognized in 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”功能中選擇的文件路徑?

如果您堅持將fn為全局fn ,為什么不在模塊中定義fn

# Somewhere in the same .py module
fn = None   

def mnuRead(self, event):
    # Modify fn

def btnHDI(self, event):
    # Read fn

您需要同時在函數中放入fn

fn = 2

def func():
    global fn

您可以在函數中讀取全局變量,但不能更改它; 除非您嘗試在函數中更改變量,否則python會自動將其設置為局部變量,除非您在變量前面使用global。

更好地:

fn = func():
    return value to fn

除非你絕對需要

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM