python31 中级[module/package+import]
一 module
通常模块为一个文件,直接使用 import 来导入就好了。可以作为 module 的文件类型
有".py"、".pyo"、".pyc"、".pyd"、".so"、".dll"。
二 package
通常包总是一个目录,可以使用 import 导入包,或者 from +import 来导入包中的部分模块。包目录下为首的一个文件便是
__init__.py。然后是一些模块文件和子目录,假如子目录中也有 __init__.py 那么它就是这个包的子包了。
参考:http://wiki.woodpecker.org.cn/moin/PythonEssentialRef8
一 模块
你可以使用 import 语句将一个源代码文件作为模块导入.例如:
#file:spam.py
a=37#一个变量
deffoo:#一个函数
print"I'mfoo"
classbar:#一个类
defgrok(self):
print"I'mbar.grok"
b=bar()#创建一个实例
使用 import spam 语句就可以将这个文件作为模块导入。系统在导入模块时,要做以下三件事:
1.为源代码文件中定义的对象创建一个名字空间,通过这个名字空间可以访问到模块中定义的函数及变量。
2.在新创建的名字空间里执行源代码文件.
3.创建一个名为源代码文件的对象,该对象引用模块的名字空间,这样就可以通过这个对象访问模块中的函数及变量,如:
importspam#导入并运行模块 spam
printspam.a#访问模块 spam的属性
spam.foo()
c=spam.bar()
...
用逗号分割模块名称就可以同时导入多个模块:
import socket, os, regex 模块导入时可以使用 as 关键字来改变模块的引用对象名字:
importosassystem
importsocketasnet,threadasthreads
system.chdir("..")
net.gethostname()
使用 from 语句可以将模块中的对象直接导入到当前的名字空间. from 语句不创建一个到模块名字空间的引用对象,而是把被导入模块
的一个或多个对象直接放入当前的名字空间:
fromsocketimportgethostname
#将 gethostname 放如当前名字空间