我知道在使用Groovy閉包時,我可以在閉包上更改delegate
,因此可以在閉包中定義函數調用。Python關閉和替換周邊範圍
我可以在Python中做類似的事嗎?
特別是,如果你把下面的代碼:
def configure():
build()
def wrap(function):
def build():
print 'build'
function()
wrap(configure)
我想它來打印「構建」(只更改了wrap()
)。
一些注意事項:
我不想通過功能集成到configure()
因爲可能有大量的可以由configure()
被調用的函數。
我也不想全局定義它們,因爲可能會有大量的函數可以調用configure()
,我不想污染全局名稱空間。
事實上 - 這是所問問題的確切答案。 'new.function'類型也可以作爲'types.FunctionType'使用,它的作用是使'wrap'中的局部變量作爲新創建函數中的全局變量。 – jsbueno 2012-01-11 22:30:09