2

これはとてつもなく単純だと確信していますが、私はそれを機能させることができませんでした。

モジュール「user_module」のx関数内からの値を「main_program」に返したいtest

ファイル: user_module

def test ():
    x =5
    return x

ファイル: main_program

import user_module
user_module.test()
print x

ただし、上記のコードは機能しません:(次のエラーが表示されます

NameError: name 'x' is not defined
4

2 に答える 2

8

あなたのモジュールでは、 x は関数 test 内で定義されています。
つまり、その関数のスコープ内でのみ使用できます。
モジュール内から x にアクセスしようとしても、x はそのモジュールでグローバルに定義されていないため、名前エラーが発生します。

これは機能しません:
file: user_module

 def test ():
     x =5
     return x

 print x

NameError を生成します。
(これは、一般的なソリューションがすべてをグローバルに利用可能にするという意味ではありません...)

問題を解決するには、x という名前の変数を作成します。
次のようにコードを変更する必要があります。

 import user_module
 x = user_module.test()
 print x

または、x を出力する代わりに、test() の結果を出力することもできます。

 print user_module.test()
于 2013-05-25T18:13:09.597 に答える
7

これはx、関数で定義されているためです。つまり、モジュールのスコープではなく、関数のスコープ内にあることを意味します。しかし、あなたの関数はそれを返しています - これは良いことです:)。したがって、これらのソリューションのいずれかを使用して取得しますx

1.

import user_module
print user_module.test()

2.

xあるモジュールから別のモジュールに渡したい場合は、次のuser_moduleようになります。

x = 5

メインスクリプトでは、これを行います:

import user_module
print user_module.x

3.

または、あなたのでこれを行うことができますuser_module:

def test():
    x = 5
    return x

x = test()

メインスクリプトでこれを行います:

import user_module
print user_module.x
于 2013-05-25T18:10:26.690 に答える