0
def createMenu(self, menuData):
menu = wx.Menu()
for eachItem in menuData:
if len(eachItem) == 2:
label = eachItem[0]
subMenu = self.createMenu(eachItem[1])
menu.AppendMenu(wx.NewId(), label, subMenu)
else:
self.createMenuItem(menu, *eachItem)
return menu
在这段代码中,返回值是menu
,它指的是对象wx.Menu()
。这个对象是一个局部变量。当这个函数调用结束时它将被删除。但是本书中的下一个代码是 menuBar.Append(self.createMenu(menuItems), menuLabel)
。 createMenu(menuItems)
它是如何工作的?我的意思是menu
指向的对象已被删除。关于python的返回值
你在说什么? Python中没有静态变量,函数不返回变量,它们返回值(几乎任何语言,不仅仅是Python)。 – delnan 2012-07-29 10:55:59
'menuBar'不是静态的,当函数超出范围时会消失。我不确定是什么给了你这个印象。 – 2012-07-29 11:30:34
是什么让你觉得'menuBar'是一个静态变量(Python没有)?它只是函数的局部变量,当函数返回时它会“消失”。 'SetMenuBar()'可以在_it_返回之前复制其当前值。 – martineau 2012-07-29 15:43:30