0

重複の可能性:
別のファイルPythonからのグローバル変数

別のファイルに変数を設定することは可能ですか?

だから私はこのような2つの異なるファイルを持っています。

tes1.py

import test2
st = 'a'
def main():
  mis = input('puts: ')
  print tes2.set(mis)
main()

tes2.py

def set(object):
  pics = ['''
  %s
  1st
  '''%st,
  '''
  %s
  2nd
  ''']
  return pics[object]

そして私はtes1.pyを実行し、エラーを発行しました:

NameError: global name 'st' is not defined

返信ありがとうございます

4

2 に答える 2

1

はい、しかしあなたは本当にそれをしたくありません。stの引数として渡しますset()。ただし、次の(悪い)セットアップは機能します。

lib.py

var = "woo"

exec.py

import lib
print lib.var

(にインポートlib.pyするだけでは、exec.pyからの変数を使用できず、その逆であることに注意してください。それが状況にどのように適用されるかを考えてください。)exec.pylib.py

于 2012-07-15T04:19:16.273 に答える
1

いくつかのヒント:

  • main()関数をif __name__ == '__main__'ブロックにラップします。インポートされたモジュールが、インポート時に実行されるべきではないコードを実行するのを防ぎます。私は通常、main()完全に廃止し、すべてのメインコードをifブロックに書き込むだけです。
  • objectビルトインタイプです。名前を付けないでくださいobject。またset、それもタイプなので。
  • グローバル変数をパラメーターにする方法は常にあるため、グローバル変数は推奨されません(グローバル変数が定数でない限り、これで問題ありません)。

これが私がそれをする方法です:

test1.py

import test2

if __name__ == '__main__':
  st = 'a'
  mis = input('puts: ')

  print tes2.rename_me_set(st, mis)

test2.py

def rename_me_set(st, obj):
  pics = ['''
  %s
  1st
  ''' % st,
  '''
  %s
  2nd
  ''']

  return pics[obj]
于 2012-07-15T04:21:41.750 に答える