import tkinter as tk 和 from tkinter import 之间的区别

问题描述 投票:0回答:3

我刚刚开始学习python,对python的了解还不是很深入。 有什么区别

from Tkinter import *

import Tkinter as tk

为什么我不能直接写:

import Tkinter

有人可以启发我吗?

python import tkinter
3个回答
32
投票

from Tkinter import *
将 Tkinter 中的每个公开对象导入到当前命名空间中。
import Tkinter
在您的命名空间中导入“命名空间”Tkinter,并
import Tkinter as tk
做同样的事情,但是在本地将其“重命名”为“tk”以节省您的打字时间

假设我们有一个模块 foo,包含类 A、B 和 C。

然后

import foo
可以让您访问 foo.A、foo.B 和 foo.C。

当您这样做时

import foo as x
您也可以访问这些内容,但名称为 x.A、x.B 和 x.C。
from foo import *
将直接在当前命名空间中导入 A、B 和 C,因此您可以使用 A、B 和 C 访问它们。

还有

from foo import A, C
会将 A 和 C 导入到您当前的命名空间中,但不会导入 B。

您还可以执行

from foo import B as Bar
,这将使 B 在名称 Bar 下可用(在您当前的命名空间中)。

一般来说:当您只想要一个模块的一个对象时,您可以使用

from module import object
from module import object as whatiwantittocall

当您需要某些模块功能时,您可以执行

import module
import module as shortname
来节省您的打字时间。

from module import *
不鼓励使用,因为您可能会意外地隐藏(“覆盖”)名称,并且可能会丢失哪些对象属于哪个模块。


3
投票

你当然可以使用

import Tkinter

但是,如果您这样做,则必须在您使用的每个 Tk 类名称前面加上

Tkinter.

这相当不方便。

另一方面,以下内容:

import Tkinter as tk

只需输入

tk.
而不是
Tkinter.
,就可以回避问题。

至于:

from Tkinter import *

这通常是一个坏主意,原因在应该避免通配符导入吗?

中讨论过

0
投票

写作:

from tkinter import * 

导致导入

tkinter
模块中存在的所有内容

写作:

import tkinter

会导致导入

tkinter
模块,但如果这样做,为了能够调用您必须使用的任何方法:

tkinter.function_name()
© www.soinside.com 2019 - 2024. All rights reserved.