2013-02-28 47 views
3

作为一个新手,我开始喜欢几乎默认情况下导入模块,因为我开始编写某些东西时,只是因为我调用了其中的某些函数(模块如random,time,os和sys)。但是,这是否会影响性能?如果我只想在模块中使用特定的功能,我是否更明确地询问它,或者我应该不在意?导入模块 - 多少是多少?

回答

6

当你做from module import name时,Python仍然需要运行module,所以在性能方面没有区别。

一般来说,如果你只使用从模块的一件事,在使用from x import y是好的,但在其他方面,使用import x然后x.y导致冲突的名字的机会较低。

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

+0

如果我使用“从模块导入*”怎么办? – Kimomaru 2013-02-28 20:39:39

+0

@Kimomaru这通常是一个坏主意,除非模块是专门为它设计的。在大多数情况下,它只会污染你的命名空间,并且使代码更难处理。当然,它仍然会像其他方法一样加载整个模块。 – 2013-02-28 20:40:17

+0

有趣。所以,最好尽可能具体,因为它可以使事情保持有组织。我可以想象导入所有内容,然后意外地创建一个与导入的内容相同的函数 - 会导致问题。 – Kimomaru 2013-02-28 20:43:19