python导入模块

#python导入模块

##使用from import 不能节约内存

python导入模块和他们的属性有两种方法:

import random
print random.choice(range(10))

from random import choice
print choice(range(10))

第一种方法是将模块的名字设置为一个隐含的名字空间里的全局变量,这样你就可以好像访问全局属性那样访问choice函数。而在第二个例子里,我们是直接把choice引入到全局名字空间里来(而非模块的名字)。因此不再需要把这个属性当成是模块的成员了。实际上我们也只拥有了这个属性而已。

Python新手之间经常有一种误解,以为第二种方法只导入了一个函数,而没有导入整个模块。这是不对的。整个模块其实已经被导入了,但是只有那个函数的引用被保存了起来。所以from-import这种语法并不能带来性能上的差异,也没有节省什么内存。

##能不能重复导入一个模块

新手经常会担忧的一个问题是他们有两个模块m.py和n.py都导入了foo.py模块。当m导入n时,foo岂不是会被导入两次?简单的来说,没错,是这样的,但是和你想的有点不一样。

Python有导入模块(importing)和加载模块(loading)之分。一个模块可以被导入任意多次,但是它只会被加载一次。就是说,当Python碰到一个已经被加载的模块又被导入时,它会跳过加载的过程,所以你无需担心额外消耗内存的问题。