无法从函数内部编辑元组

时间:2015-03-15 07:44:59

标签: python tuples

我在python中编写应用程序。这是功能:

def aircraftListBoxRefresh():
    sqlConnect=sqlite3.connect("fglconfdb")
    sqlCursor=sqlConnect.cursor()
    sqlCursor.execute("SELECT fgAircraftDir FROM fglconfig")
    adl=sqlCursor.fetchall()
    global aircraftDirectories
    for x in adl:
        aircraftDirectories=aircraftDirectories+(x,)

<小时/> 我放print(aircraftDirectories)来测试值是否发生变化。它在功能方面发生了变化。但是在函数之外它是null。

我试图用这个来访问该值:

aircraftDirectories=()
aircraftDir=StringVar(value=aircraftDirectories)
aircraftListBox=Listbox(mainframe,height=7,width=100,listvariable=aircraftDir)
aircraftListBox.place(x=170,y=170)

但我不能。 任何帮助非常感谢。 问候。

2 个答案:

答案 0 :(得分:1)

你无法在函数内部或外部修改元组,它们是不可变的。也许你想要一览:

def aircraftListBoxRefresh():
    sqlConnect=sqlite3.connect("fglconfdb")
    sqlCursor=sqlConnect.cursor()
    sqlCursor.execute("SELECT fgAircraftDir FROM fglconfig")
    adl=sqlCursor.fetchall()
    for x in adl:
        aircraftDirectories.append(x)

aircraftDirectories=[]
aircraftDir=StringVar(value=aircraftDirectories)
aircraftListBox=Listbox(mainframe,height=7,width=100,listvariable=aircraftDir)
aircraftListBox.place(x=170,y=170)

使用这种方法,由于您正在修改列表而不是重新分配给变量,因此您不需要global

答案 1 :(得分:0)

您无法修改元组,但可以替换它。在这个例子中,M []是一个元组列表,每个元组包含两个数字。我想将元组的第一个数字替换为0,但保留第二个数字。

M[j] = (0, M[j][1])