08/06/13 14:00:14
>>651
名前の管理の仕方が違う。後者の書き方はインポートする側の名前空間を汚さない。
from Tkinter import *
の場合は Tkinter モジュールで定義された名前が全部インポートする側(の名前空間)に取り込まれる。
メリットは取り込んだ名前をそのまま使えること。
例えば c = Canvas(...) のように Canvas クラスを直接使用できる。
デメリットは、取り込んだ名前をインポートする側のプログラムで上書き(再定義)してしまったり、
そうならないように注意してプログラムを書かなければいけなくなること。
例えば import 後に class Canvas: ... のように同じ名前のクラスや変数を再定義してしまうと
Tkinter の Canvas は使えなくなる。それで構わないこともあるが、うっかりミスにつながりやすい。
import Tkinter as Tk
の場合はインポートする側(の名前空間)に Tk という名前しか取り込まない。
メリットは Tkinter モジュールで定義されたクラスや変数を上書き定義してしまう心配がないこと、
デメリットは c = Tk.Canvas(...) のようにいちいちモジュール名を前置きしないといけないことだ。
俺は名前空間を汚さない後者の書き方を好んで使っている。