這是可能的(儘管通常不是一個好主意)來創建存儲在globals()
其成員定義一個類或其他詞典:python函數如何將所有變量放在全局名稱空間中?
oddclass = type("oddclass", (object,), globals())
有沒有辦法做一個功能相同的,所以所有的它的局部變量存儲在全局(或模塊)名稱空間中,而不是它自己的?
我一次可以得到相同的效果一個變量,通過聲明變量global
:
def myfunction():
global x
x = 10
什麼我要找的是實現所有的內部變量相同的效果一般方式myfunction
(也適用於尚未在頂部聲明的人),理想情況下某種單線程可輕鬆添加,然後在不再需要時刪除。
PS。我問這個問題,因爲我很好奇python管理函數名稱空間的方式。我的動機是在某些情況下(如許多本地數據神祕失敗的函數),將它用作臨時調試幫助,但是不要介意:我可以像上面一樣使用global
。這個問題是關於python函數內部的。
爲什麼你希望你的函數在被調試時以完全不同的方式運行?你冒險從一個函數的'x'干擾另一個函數。 – r3m0t
爲什麼不使用調試器作爲調試幫助? – Keith
如果某個函數在管理複雜數據結構過程中引發異常,則與IDLE捆綁在一起的調試器無法完成檢查剩餘部分的任務。 (的確,一個體面的調試器會使這個不確定)。但是可以從解釋器提示中檢查全局變量。我只爲這個即將崩潰的功能(手動)執行此操作,所以沒有風險。 – alexis