21

私はそれがばかげた質問であることを知っていますが、私はPythonを学び始めたばかりで、Pythonについて十分な知識がありません. 私の質問は、違いは何ですか

from Tkinter import *

import Tkinter as tk

?どうして書けないの?

import Tkinter

誰かが私を啓発するために数分を割くことができますか?

4

3 に答える 3

28

from Tkinter import *Tkinter で公開されているすべてのオブジェクトを現在の名前空間にインポートします。 import Tkinter名前空間に「名前空間」Tkinter をインポート import Tkinter as tkして同じことを行いますが、入力を節約するためにローカルで「tk」に「名前を変更」します

クラス A、B、および C を含むモジュール foo があるとします。

次にimport foo、foo.A、foo.B、および foo.C へのアクセスを許可します。

それらにもアクセスできimport foo as xますが、xA、xB、および xC という from foo import *名前で、現在の名前空間に A、B、および C を直接インポートするため、A、B、および C でそれらにアクセスできます。

from foo import A, CA と C をインポートするものもありますが、B は現在のネームスペースにインポートしません。

を実行することもできますfrom foo import B as Bar。これにより、B が Bar という名前で (現在の名前空間で) 利用可能になります。

したがって、一般的には、モジュールのオブジェクトが 1 つだけ必要な場合は、from module import objectまたはfrom module import object as whatiwantittocall.

いくつかのモジュールの機能が必要な場合は、入力を節約するためにimport module、 またはを実行します。import module as shortname

from module import *誤って名前をシャドウ (「オーバーライド」) し、どのオブジェクトがどのモジュールに属しているかを追跡できなくなる可能性があるため、推奨されません。

于 2013-04-12T15:07:43.133 に答える
3

あなたは確かに使用することができます

import Tkinter

ただし、そうすると、使用するすべての Tk クラス名の前に を付ける必要がありますTkinter.

これはかなり不便です。

一方で、次のようになります。

import Tkinter as tk

tk.の代わりに入力するだけで問題を回避できますTkinter.

に関して:

from Tkinter import *

ワイルドカードのインポートは避けるべきですか?で説明されている理由により、一般的には悪い考えです。

于 2013-04-12T15:08:12.543 に答える
0

書き込み:

from tkinter import * 

tkinterモジュールに存在するすべてのものをインポートすることになります

書き込み:

import tkinter

モジュールをインポートtkinterすることになりますが、そうする場合、任意のメソッドを呼び出すことができるようにするには、次を使用する必要があります。

tkinter.function_name()
于 2018-12-31T10:51:43.603 に答える