我有一個字典(在下面的代碼中喚醒),其中的值是列表。在python中使用def來變換字典
我想改變使用高清每個列表的第二個元素,就像下面:
def auto(t):
wakeup('zone1')[1] = wakeup('zone1')[0] - t
wakeup = {'zone1': [15, auto(1)],
'zone2': [15, auto(1)]}
print wakeup
它不會起作用,因爲汽車()使引用已定義喚醒之前喚醒。
但是,如果我試圖通過使用def AFTER喚醒定義來解決這個問題,那麼我仍然會收到一個錯誤,因爲此時喚醒字典會在auto()定義之前對auto()進行引用。
理想我想保持這種語法的列表:15,自動(1)]
你能幫幫我嗎?
我有一個小小的反對意見,那就是他實際上並沒有改變全局變量,而是該變量所指向的字典實例(這是一個參考):他不重新分配它。它將工作在沒有全球化我仍然認爲應該在處理全局變量時總是使用它。 –
@Samy Arous:嗯,你確定?在我看來,函數'auto'在這裏改變一個全局變量......我會試試看... –
是的我是,至少在python 2.7中。我還沒有習慣python 3.如果他要爲wakeup分配一個新值:wakupe = {'zone1':[5,0]}那麼全局將是必要的。 –