6

Python スクリプトに複数の変数が作成される関数があり、それらを他の関数で使用したいと考えています。私はこれを使用globalすることを考えましたが、そうする方法は間違っていると思いました。

では、関数内で他の関数の変数を作成する最良の方法を誰か教えてもらえますか?

4

4 に答える 4

8

変数をクラスに編成します。1 つの関数でクラスをインスタンス化し、そのインスタンスを必要な場所に渡します。

経験則: ある時点で何かをグローバルにすることが良い解決策のように思える場合は、それを行わないでください。常により良い方法があります。

于 2012-05-27T16:14:20.957 に答える
2

「名前空間」オブジェクトを作成できます。これは、グローバル名前空間を明確に保つために名前空間として機能するオブジェクトです。

class namespace():
    pass

global_data=namespace()

def add_attributes(obj):
    obj.foo="bar"

add_attributes(global_data)
print (global_data.foo)  #prints "bar"

ただし、これは、globalキーワードを使用するよりもわずかに優れています。ポールが言ったように、あなたは本当にここでクラスを望んでいます。

于 2012-05-27T16:23:10.217 に答える
2

関数の属性として変数を宣言します。

def f1():
    f1.a=100
    f2.b=200

def f2():
    print(f1.a,f2.b)

f1()
f2()

出力:

100 200
于 2012-05-27T16:30:12.820 に答える
1

これは、クラスを実装するのに適した場所かもしれません。これには多くの利点があります。 チュートリアルのクラスを参照してください

于 2012-05-27T16:19:20.740 に答える