模块导入

举例:

方法一:

import modname

导入一个模块,就可以引用它的任何公共的函数、类和属性。

用import语句导入模块,就在当前的名称空间建立了一个到该模块的引用,这种引用必须使用全称,即当使用模块中定义的函数时,必须包含模块的名字,应该使用modname.funcname

 

方法二:

from  modname import funcname 

from  modname import func1,func2

或者from modname import *  

导入一个函数,这个函数就被导入到本地名称空间,它可以直接使用。

 

 

python中,每个py文件被称之为模块,每个具有__init__.py文件的目录被称为包。

只要模块或者包所在的目录在sys.path中,就可以使用import 模块或import 包来使用。 
  

import一般有三种用法,以hashlib举例,其中模块hashlib有方法hash
一。import hashlib 这种是最基本的用法,可以完整的导入制定模块,但引用的时候必须完全照搬,比如要调用hash方法必须写成 hashlib.hash()
二。import hashlib as _hl 这种是第一种的进阶用法,基本跟第一种类似,区别只在于,可以按照自己的意愿给模块起别名,在这里调用的时候就可以写成 _hl.hash() 。从这里你就可以看出,使用as的目的一般是为了好记。
三。import hashlib.hash as _hs 这种直接给指定模块的指定方法导入,而不导入整个模块,当同样调用hashlib的hash方法的时候就可以写成_hs()。

在使用中要根据需要使用,在保证不命名冲突的前提下选择。

关于命名空间与作用域的资料可以参考python命名空间与作用域 
总之,一般情况只要不是特别情况不要使用全局变量。


如果想使用非当前模块中的代码,需要使用Import。

如果你要使用的模块(py文件)和当前模块在同一目录,只要import相应的文件名就好,

比如在a.py和b.py在同一个目录,那么要在a.py中使用b.py: import b 

但是如果要import一个不同目录的文件(例如b.py)该怎么做呢? 

首先需要使用sys.path.append方法将b.py所在目录加入到搜素目录中。然后进行import即可,例如 
import sys 
sys.path.append('c:\xxxx\b.py') # 这个例子针对 windows 用户来说的 
大多数情况,上面的代码工作的很好。但是如果你没有发现上面代码有什么问题的话,可要注意了,上面的代码有时会找不到模块或者包(ImportError: No module named xxxxxx),这是因为: 
sys模块是使用c语言编写的,因此字符串支持 '\n', '\r', '\t'等来表示特殊字符。所以上面代码最好写成: 
sys.path.append('c:\\xxx\\b.py') 
或者sys.path.append('c:/xxxx/b.py') 
这样可以避免因为错误的组成转义字符,而造成无效的搜索目录(sys.path)设置。 

 

posted on 2015-06-26 09:49  紫夜精灵  阅读(183)  评论(0编辑  收藏  举报