2016-11-09 1 views
2

私は1年前にPythonのチュートリアルを取ってそれを楽しんだので、GUIになっているので、私はtkinterウィジェットを物事に組み込もうとしました。私が初心者のtkinterを扱っているチュートリアルの多くは、次のコードで始まります。

from tkinter import *

魅力的な理由はありますか?つまり、すべてをロードするのはなぜですか?一般に、私のpythonコードで "from module import *"というステートメントを使うのは悪い習慣ですか?

+1

それは依存するが、それはローカルな名前空間を汚染しません。 'tkinter'の名前空間の名前をもっと短くしたいなら、' tkinterをtk'としてインポートすることができます。それであなたのコードは 'tkのようになります。 <...> '。 – AChampion

答えて

5

はい、それは二つの理由のために非常に悪い習慣です:ポイント1用変数/関数など


をオーバーライドする

  1. コードの可読性
  2. リスク: この例を見てみましょう:

    コードを見ると、実際にどのモジュールからbcdが所属しているかについてのアイデアは得られません。あなたがそれを行う場合は、他の方法で

    は、好き:

    #     v v will know that these are from module1 
    from module1 import b, c # way 1 
    import module2    # way 2 
    
    a = b + c - module2.d 
    #   ^will know it is from module2 
    

    をそれはあなたのためのよりクリーンであり、また、あなたのチームに参加する新しい人は、より良いアイデアを持っています。

    ポイント2について:module1module2両方がbとして変数を持っているとしましょう。私がするとき:

    from module1 import * 
    from module2 import * 
    
    print b # will print the value from module2 
    

    ここでは、module1の値が失われます。 bmodule1に宣言されていてもコードが動作しない理由をデバッグするのは難しく、module1.bを使用するコードが必要です。

    あなたが異なるモジュールで同じ変数を持っている、とあなたがモジュール全体をインポートしたくない場合は、あなたも行うことがあります。

    from module1 import b as mod1b 
    from module2 import b as mod2b 
    
関連する問題