私は1年前にPythonのチュートリアルを取ってそれを楽しんだので、GUIになっているので、私はtkinterウィジェットを物事に組み込もうとしました。私が初心者のtkinterを扱っているチュートリアルの多くは、次のコードで始まります。
from tkinter import *
魅力的な理由はありますか?つまり、すべてをロードするのはなぜですか?一般に、私のpythonコードで "from module import *"というステートメントを使うのは悪い習慣ですか?
2
A
答えて
5
はい、それは二つの理由のために非常に悪い習慣です:ポイント1用変数/関数など
をオーバーライドする
- コードの可読性
- リスク: この例を見てみましょう:
コードを見ると、実際にどのモジュールから
b
、c
、d
が所属しているかについてのアイデアは得られません。あなたがそれを行う場合は、他の方法では、好き:
# 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について:
module1
とmodule2
両方がb
として変数を持っているとしましょう。私がするとき:from module1 import * from module2 import * print b # will print the value from module2
ここでは、
module1
の値が失われます。b
がmodule1
に宣言されていてもコードが動作しない理由をデバッグするのは難しく、module1.b
を使用するコードが必要です。あなたが異なるモジュールで同じ変数を持っている、とあなたがモジュール全体をインポートしたくない場合は、あなたも行うことがあります。
from module1 import b as mod1b from module2 import b as mod2b
関連する問題
- 1. 再帰は一般的に悪い習慣ですか?
- 2. python: "from module import *"の場合?
- 3. Javaで `this`を使うのは悪い習慣ですか?
- 4. Pythonの "import X"と "from module import X"の違いは?
- 5. 多くの「initWith」パラメータを使用することは一般に悪い習慣ですか?
- 6. SQL Serverでxp_cmdshellを使用することは一般的に悪い習慣ですか?
- 7. これは悪い習慣ですか?
- 8. は@unlink悪い習慣ですか?
- 9. 「例外をスローする」というのは悪い習慣ですか?
- 10. memcpyをstrncpyなどに使うのは悪い習慣ですか?
- 11. ステートフルヘルパークラスを使用するのは悪い習慣ですか?
- 12. DBレコードをコードに格納するのは悪い習慣ですか?
- 13. スイッチケースにスイッチケースを入れるのは悪い習慣ですか?
- 14. Javascript - 関数の配列はこの悪い習慣です
- 15. Javaではどのようなグローバル変数が悪い習慣ですか?
- 16. クラスレベル変数でusingステートメントを使用することは悪い習慣ですか?
- 17. Pythonは "from __future__ import division"をどう扱うのですか?
- 18. AppDelegateをシングルトンとして使用するのは悪い習慣ですか?
- 19. 拡張メソッドと拡張プロパティは悪い習慣ですか?
- 20. 静的なフィールドを持つのは悪い習慣ですか?
- 21. ドメインオブジェクトの永続アノテーションは悪い習慣ですか?
- 22. 多くのIBOutletsを使うのは良い習慣ですか?
- 23. 論理を表示することは悪い習慣です
- 24. 静的クラスはPHPでは悪い習慣ですか?
- 25. ifステートメント内のifステートメントの使用、良いか悪い練習ですか?
- 26. リポジトリパターン内のIDでフィルタするのは悪い習慣です
- 27. "import module"と "from module import *"のグローバル変数に関して動作が異なるのはなぜですか?
- 28. CSS - 'Common Classes'悪い習慣かどうか?
- 29. typedefの短縮形ヘッダファイルは悪い習慣ですか?
- 30. データ転送オブジェクトの継承は悪い習慣ですか?
それは依存するが、それはローカルな名前空間を汚染しません。 'tkinter'の名前空間の名前をもっと短くしたいなら、' tkinterをtk'としてインポートすることができます。それであなたのコードは 'tkのようになります。 <...> '。 – AChampion