【问题标题】:Difference between import tkinter as tk and from tkinter importimport tkinter as tk 和 from tkinter import 之间的区别
【发布时间】:2013-04-05 04:23:42
【问题描述】:

我知道这是一个愚蠢的问题,但我才刚刚开始学习 python,而且我对 python 没有很好的了解。我的问题是有什么区别

from Tkinter import *

import Tkinter as tk

?为什么我不能写

import Tkinter

谁能抽出几分钟来启发我?

【问题讨论】:

    标签: python import tkinter


    【解决方案1】:

    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 objectfrom module import object as whatiwantittocall

    当您需要某些模块功能时,您可以使用import moduleimport module as shortname 以节省您的打字时间。

    不建议使用from module import *,因为您可能会不小心隐藏(“覆盖”)名称,并且可能会丢失属于哪个模块的对象。

    【讨论】:

    • 那么,如果我只使用一个类(例如 A 类),使用“import foo”是否需要更多的处理能力。我应该改用“from foo import A”吗?或者差异可以忽略不计?顺便说一句,对于像我这样的初学者来说很好的解释。谢谢!
    • 对导入的性能问题 a) 可以忽略不计,b) 无关紧要。做最适合您的事情,而不是 python 实现。当你使用 A 时,'from foo import A' 在稍后的查找中会更快,但 pythonists 通常不关心这些事情。
    【解决方案2】:

    你当然可以使用

    import Tkinter
    

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

    这很不方便。

    另一方面,如下:

    import Tkinter as tk
    

    只要求您输入tk. 而不是Tkinter.,从而回避了这个问题。

    至于:

    from Tkinter import *
    

    这通常是个坏主意,原因在 Should wildcard import be avoided? 中讨论过

    【讨论】:

      【解决方案3】:

      写作:

      from tkinter import * 
      

      导致导入 tkinter 模块中存在的所有内容

      写作:

      import tkinter
      

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

      tkinter.function_name()
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-11-14
        • 2019-06-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-23
        • 2018-09-21
        • 1970-01-01
        相关资源
        最近更新 更多