1

globals()メンバ定義をまたは別のディクショナリに格納するクラスを作成することは可能ですが (通常は良い考えではありません) :

oddclass = type("oddclass", (object,), globals())

すべてのローカル変数がそれ自身ではなくグローバル (またはモジュール) 名前空間に格納されるように、関数で同じことを行う方法はありますか?

variables を宣言することで、一度に 1 つの変数で同じ効果を得ることができますglobal

def myfunction():
    global x
    x = 10

私が探しているのは、すべての内部変数(上部でまだ宣言されていないものも) に対して同じ効果を達成する一般的なmyfunction方法です。理想的には、簡単に追加して削除できるワンライナーのようなものです。不要になりました。

PS。Python が関数の名前空間を管理する方法に興味があるので、この質問をしています。私の動機は、特定の状況でこれを一時的なデバッグ支援として使用することです (多くのローカル データが不可解に失敗する関数) global。この質問は、python 関数の内部に関するものです。

4

1 に答える 1

1

これは動作します

>>> def test():
    x = 10
    y = 'Some string'
    for k, v in locals().items():
        globals()[k] = v


>>> test()

>>> x
10
>>> y
'Some string'

これは非常に危険な手法であり、絶対に使用しないでください

于 2012-10-20T23:20:52.280 に答える