python的()和[]

在調試一個python程序,目的是根據配置自動生成一個菜單,菜單隻有一項,如果這個配置打開,就要創建它,並把它加入到一個現成的菜單中,比如加入到“編輯”中。

本文說的問題,其實和這個菜單沒啥關係,只是加這菜單時,我遇到了問題,代碼邏輯如下的樣子:

def addActions(self, wid, acts):
    for action in acts:
        if action is None:
            wid.addSeparator()
        else:
            wid.addMenu(action)

def AddMenuss(self):
    # mEdit 是一個 self.menuBar().addMenu("編輯")
    mnlist = (None, self.mDelP, self.mAddP)
    addActions(self.mEdit, mnlist)
    mnlist = (self.shortSwitch)
    self.addActions(self.mEdit, mnlist)

這裏我們不說具體mDelP、mAddP、shortSwitch究竟是啥(實際上是一個菜單項^-^),我要探究的是mnlist。

最後兩行我是仿照它前面的兩行寫的,很簡單,就是把新的菜單項加入到mnlist之後,通過調用addActions()再把它們加入到mEdit菜單項中。

看上去兩者除了數量不同之外,寫法沒有區別,但是在運行的時候,卻掛在了最後一行 addActions()的:

for action in acts:

這一行上,多次嘗試都是一樣,我把mnlist也加了一項:

mnlist = (None,shortSwitch)

這次順利通過,這樣看,是數量不能爲1!這有點奇怪呀,怎麼可能數量至少是2呢?我再改改試試,因爲之前用到列表都是用[]來表示的:

mnlist = [shortSwitch]

然後再運行程序,通過!

這樣看來,應該堅持用[]來表示列表,以明確的標示來表示列表是好的習慣。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章