模块(Modules)
如果想在所编写的别的程序中重用一些函数的话,应该怎么办?答案是 模块(Modules) 。
编写模块有很多种方法,其中最简单的一种便是创建一个包含 函数 与 变量 、以 .py
为后缀的文件。
另一种方法是用撰写Python解释器本身的本地语言来编写模块,比如C语言。
使用 import
语句导入Python模块。
按字节码编辑的.pyc文件
导入一个模块是一件代价高昂的事情,因此 Python 引入了一些技巧使其能够更快速的完成。其中一种方式便是创建按字节码编译的(Byte-Compiled)文件,这一文件以 .pyc 为其扩展名,是将 Python 转换成中间形式的文件。这一 .pyc 文件在你下一次从其它不同的程序导入模块时非常有用——它将更加快速,因为导入模块时所需要的一部分处理工作已经完成了。同时,这些按字节码编译的文件是独立于运行平台的。
注意:这些 .pyc 文件通常会创建在与对应的 .py 文件所处的目录中。如果 Python 没有相应的权限对这一目录进行写入文件的操作,那么 .pyc 文件将不会被创建。
from…import语句
如果希望直接将模块内的变量导入程序,可以使用 from module import func 语句来实现。
警告:一般来说,你应该尽量避免使用 from…import 语句,而去使用 import 语句。这是为了避免在你的程序中出现名称冲突,同时也为了使程序更加易读。
模块的 name
每一个Python模块都定义了它的 __name__ 属性,如果它与 __main__ 属性相同则代表这一模块是由用户独立运行的。
编写自己的模块
每一个Python程序同时也是一个模块,只需要保证它以.py为扩展名即可。
模块应该放置于与其它我们即将导入这一模块的程序相同的目录下,或者是放置在 sys.path
所列出的其中一个目录下。
使用 .
来访问模块中的成员。
案例:
def say_hi(): |
import mymodule.py |
dir 函数
内置的 dir() 函数能够返回由 对象所定义的名称列表。 如果这一对象是一个模块,则该列表会包括函数内所定义的 函数、类与变量。
该函数接受参数。 如果参数是模块名称,函数将返回 这一指定模块的名称列表。 如果没有提供参数,函数将返回 当前模块的名称列表。
包 (Packages)
包是指一个包含模块与一个特殊的 init.py 文件的文件夹,后者向 Python 表明这一文件夹是特别的,因为其包含了 Python 模块。包是一种能够方便地分层组织模块的方式。-<some folder present in the sys.path>/
- world/
- __init__.py
- asia/
- __init__.py
- india/
- __init__.py
- foo.py
- africa/
- __init__.py
- madagascar/
- __init__.py
- bar.py