0

私はPythonの初心者です。メイン関数にmain()あるモジュール内で定義された変数にアクセスしようとしています。変数をmain.pyimportedに渡すこのwithputを取得するメソッドが必要です:-deviceidget_a()

global deviceid
import lib
deviceid=123
lib.get_a()

lib.py:-

def get_a():
    global deviceid
    prnit deviceid  

Pythonシェルからの 呼び出しmainまたはアクセスの試行が返されますdeviceid

Traceback (most recent call last): File "<stdin>", line 1, in <module> File "t.py", line 4, in pp print a NameError: global name 'deviceid' is not defined

global deviceidモジュールと機能の内外の多くの場所で与えてみました。何も役に立ちません。

誰か助けてください。

4

2 に答える 2

2

Pythonには、プログラム全体に対してグローバルな名前はありません。Pythonのグローバルは、特定のモジュールに対してグローバルです。複数のモジュールで値を使用するには、その名前を1つのモジュールから別のモジュールにインポートして、2つのモジュールで使用できるようにします。

# main.py
import lib
deviceid = 123
lib.get_a()

# lib.py
import main
def get_a():
    print main.deviceid

他のコメント提供者が指摘しているように、グローバルを使用しない方がおそらくより良いオプションです。

# main.py
import lib
deviceid = 123
lib.get_a(deviceid)

# lib.py
def get_a(deviceid):
    print deviceid
于 2012-07-17T13:07:04.430 に答える
0

deviceid変数をlibモジュールに入れて、lib.deviceidを介して使用できます。

を実行してコードのどこかでdeviceidの値を変更し、lib.deviceid = X別の場所でlibモジュールを再インポートして、deviceidを再度要求すると、値としてXが使用されます。

于 2012-07-17T12:33:56.137 に答える