【问题标题】:Importing Modules - How Much is Too Much?导入模块 - 多少才算太多?
【发布时间】:2013-02-28 20:36:33
【问题描述】:

作为一个新手,当我开始编写一些东西时,我几乎默认导入模块,因为我经常调用其​​中的某些函数(随机、时间、os 和 sys 等模块)。但是,这会影响性能吗?如果我只想要模块中的特定功能,我是明确要求还是不关心更好?

【问题讨论】:

    标签: python python-2.7 python-3.x


    【解决方案1】:

    当您执行 from module import name 时,Python 仍然必须运行 module,因此在性能方面没有区别。

    一般来说,如果你只使用一个模块中的一个东西,使用from x import y 很好,但否则,使用import x 然后x.y 会降低名称冲突的可能性。

    这样做的原因是 Python 没有特别对待函数和类。当您从模块导入时,您所做的就是从该模块中获取对象并使用它们。这很有用,因为它使模块(以及类和函数)非常灵活,但这确实意味着 Python 必须运行模块的整个脚本才能从中导入(当然,模块编写者可以通过使用if name == "main": 成语插入不应在导入时运行的代码)。

    【讨论】:

    • 如果我使用“从模块导入 *”怎么办?
    • @Kimomaru 这通常是个坏主意,除非该模块是专门为它设计的。在大多数情况下,它只会污染您的命名空间,使代码更难使用。自然,它仍然像其他方法一样加载整个模块。
    • 有趣。因此,最好尽可能具体,因为它会使事情井井有条。我可以想象导入所有内容,然后意外创建一个与导入的名称相同的函数 - 会导致问题。
    • @Kimomaru 基本上,是的。更不用说一个模块可能与另一个模块具有相同的名称。例如,人们经常不小心调用了一个变量list,然后当他们尝试使用内置的list() 时就会遇到麻烦。导入命名空间的次数越多,类似的问题就越可能出现。
    • 非常有趣。好的,会做笔记的。谢谢,Lattyware。
    猜你喜欢
    • 2011-02-28
    • 2012-09-23
    • 1970-01-01
    • 2019-06-03
    • 1970-01-01
    • 2018-11-26
    • 1970-01-01
    • 1970-01-01
    • 2012-07-12
    相关资源
    最近更新 更多