2016-11-14 8 views
1

私はthis threadから来ましたが、それは参考になっていますが十分ではありませんでした。私のケースは少し異なりますが、最も重要なのは私の状況です:私は1000 +行のコードを1つのファイルにリファクタリングしていますので、何かの名前を変更するとすぐに苦しくなることがあります。3つのファイル間でインポートするグローバル変数

だから私は3に私のファイルを分割しました:私は、すべてのグローバル変数( たくさんあります - 主にブール値と文字列)が定義されてきたここで

  • settings.py
  • シンクロを。変更することができます それらの値も、私はここのものを簡素化するだろう彼らに

を変更することができます

  • groups.pyをPY。

    settings.py:

    MY_VAR = "plane" 
    

    synchro.py:

    from settings import * 
    import groups 
    
    def main(): 
        global MY_VAR 
        MY_VAR = "boat" 
        groups.update() 
    

    groups.py:私はまた、代わりfrom settings import *import settingsを記述しようと

    from settings import * 
    
    def update(): 
        print MY_VAR # will print "plane" instead of "boat" 
    

    その場合にpythonは私にglobal settings.MY_VARはエラーであると伝え、それは認識しません行を削除した場合はとなります。

    この作業を行う最も簡単で簡単な方法は何ですか?あなたの助け

  • 答えて

    0

    ため

    おかげで、あなたが以下のように行う必要があり、そのので、名前空間の汚染原因、from settings import *を行うことをお勧めしますし、後でデバッグする事が難しくありません。 私はグローバルな使用量を最小化しようとするものの、私は通常のみsettings.py

    MY_VAR = "plane" 
    

    synchro.py

    可能な場合は、同じファイル内のグローバル使用:

    import settings 
    import groups 
    
    def main(): 
        # no need to declare global here, access trough settings namespace instead 
        settings.MY_VAR = "boat" 
        groups.update() 
    

    groups.py:

    import settings 
    
    def update(): 
        print settings.MY_VAR # will print "plane" at first, after synchro main, MY_VAR should carry 'boat' 
    
    +0

    ありがとうございました! –

    関連する問題