假設我要執行的代碼,例如exec()字節碼與任意本地人?
value += 5
我自己的命名空間裏(所以結果基本上是mydict['value'] += 5
)。有一個功能exec()
,但我要傳遞一個字符串有:
exec('value += 5', mydict)
並通過報表字符串似乎有些奇怪(例如它沒有着色的那樣)。 可以這樣做:
def block():
value += 5
???(block, mydict)
?最後一行的明顯候選人是exec(block.__code__, mydict)
,但沒有運氣:它提高了UnboundLocalError
約value
。我相信它基本上執行block()
,而不是塊裏面的代碼,所以分配並不容易 - 這是正確的嗎?
當然,另一種可能的解決方案是拆卸block.__code__
...
僅供參考,我得到了,因爲this thread的問題。同時,這也是爲什麼一些(我未定)呼籲新的語法
using mydict:
value += 5
注意如何不會引發錯誤,但不會改變mydict
之一:
def block(value = 0):
value += 5
block(**mydict)
這有什麼錯簡單的類定義一個人的輝煌配方只是一個猴子修補適應? – 2009-08-15 02:40:04
我不確定你對班級的意思。我會盡量發表一個答案,概述一個可能的想法,但您可以隨時糾正我。 – 2009-08-21 22:42:38