# 第8章 模块
**目录表**
+ 简介
+ 使用sys模块
+ 字节编译的.pyc文件
+ from..import语句
+ 模块的__name__
+ 使用模块的__name__
+ 制造你自己的模块
+ 创建你自己的模块
+ from..import
+ dir()函数
+ 使用dir函数
+ 概括
你已经学习了如何在你的程序中定义一次函数而重用代码。如果你想要在其他程序中重用很多函数,那么你该如何编写程序呢?你可能已经猜到了,答案是使用模块。模块基本上就是一个包含了所有你定义的函数和变量的文件。为了在其他程序中重用模块,模块的文件名**必须**以`.py`为扩展名。
模块可以从其他程序 输入 以便利用它的功能。这也是我们使用Python标准库的方法。首先,我们将学习如何使用标准库模块。
```
#!/usr/bin/python
# Filename: using_sys.py
import sys
print 'The command line arguments are:'
for i in sys.argv:
print i
print '\n\nThe PYTHONPATH is', sys.path, '\n'
```
(源文件:[code/using_sys.py](code/using_sys.py))
## 输出
```
$ python using_sys.py we are arguments
The command line arguments are:
using_sys.py
we
are
arguments
The PYTHONPATH is ['/home/swaroop/byte/code', '/usr/lib/python23.zip',
'/usr/lib/python2.3', '/usr/lib/python2.3/plat-linux2',
'/usr/lib/python2.3/lib-tk', '/usr/lib/python2.3/lib-dynload',
'/usr/lib/python2.3/site-packages', '/usr/lib/python2.3/site-packages/gtk-2.0']
```
## 它如何工作
首先,我们利用`import`语句 输入 `sys`模块。基本上,这句语句告诉Python,我们想要使用这个模块。`sys`模块包含了与Python解释器和它的环境有关的函数。
当Python执行`import sys`语句的时候,它在`sys.path`变量中所列目录中寻找`sys.py`模块。如果找到了这个文件,这个模块的主块中的语句将被运行,然后这个模块将能够被你 使用 。注意,初始化过程仅在我们 第一次 输入模块的时候进行。另外,“sys”是“system”的缩写。
`sys`模块中的`argv`变量通过使用点号指明——`sys.argv`——这种方法的一个优势是这个名称不会与任何在你的程序中使用的`argv`变量冲突。另外,它也清晰地表明了这个名称是`sys`模块的一部分。
`sys.argv`变量是一个字符串的 列表 (列表会在后面的[章节](ch09s02.html)详细解释)。特别地,`sys.argv`包含了 命令行参数 的列表,即使用命令行传递给你的程序的参数。
如果你使用IDE编写运行这些程序,请在菜单里寻找一个指定程序的命令行参数的方法。
这里,当我们执行`python using_sys.py we are arguments`的时候,我们使用**python**命令运行`using_sys.py`模块,后面跟着的内容被作为参数传递给程序。Python为我们把它存储在`sys.argv`变量中。
记住,脚本的名称总是`sys.argv`列表的第一个参数。所以,在这里,`'using_sys.py'`是`sys.argv[0]`、`'we'`是`sys.argv[1]`、`'are'`是`sys.argv[2]`以及`'arguments'`是`sys.argv[3]`。注意,Python从0开始计数,而非从1开始。
`sys.path`包含输入模块的目录名列表。我们可以观察到`sys.path`的第一个字符串是空的——这个空的字符串表示当前目录也是`sys.path`的一部分,这与`PYTHONPATH`环境变量是相同的。这意味着你可以直接输入位于当前目录的模块。否则,你得把你的模块放在`sys.path`所列的目录之一。
- 版权信息
- 前言
- 本书的由来
- 本书目前的状况
- 约定条款
- 反馈
- 值得思考的一些东西
- 第1章 介绍
- Python的特色
- 为什么不使用Perl?
- 程序员的话
- 第2章 安装Python
- Windows®用户
- 概括
- 第3章 最初的步骤
- 使用带提示符的解释器
- 挑选一个编辑器
- 使用源文件
- 可执行的Python程序
- 获取帮助
- 概括
- 第4章 基本概念
- 数
- 字符串
- 变量
- 标识符的命名
- 数据类型
- 对象
- 逻辑行与物理行
- 缩进
- 概括
- 第5章 运算符与表达式
- 运算符
- 运算符优先级
- 表达式
- 概括
- 第6章 控制流
- if语句
- while语句
- for循环
- break语句
- continue语句
- 概括
- 第7章 函数
- 函数形参
- 局部变量
- 默认参数值
- 关键参数
- return语句
- DocStrings
- 概括
- 第8章 模块
- 字节编译的.pyc文件
- from..import语句
- 模块的name
- 制造你自己的模块
- dir()函数
- 概括
- 第9章 数据结构
- 列表
- 元组
- 字典
- 序列
- 参考
- 更多字符串的内容
- 概括
- 第10章 解决问题——编写一个Python脚本
- 解决方案
- 软件开发过程
- 概括
- 第11章 面向对象的编程
- self
- 类
- 对象的方法
- __init__方法
- 类与对象的方法
- 继承
- 概括
- 第12章 输入/输出
- 储存器
- 概括
- 第13章 异常
- try..except
- 引发异常
- try..finally
- 概括
- 第14章 Python标准库
- sys模块
- os模块
- 概括
- 第15章 更多Python的内容
- 单语句块
- 列表综合
- 在函数中接收元组和列表
- lambda形式
- exec和eval语句
- assert语句
- repr函数
- 概括
- 第16章 接下来学习什么?
- 探索更多内容
- 概括
- 附录A 自由/开放源码软件(FLOSS)
- 附录B 关于本书
- 关于作者
- 关于译者
- 关于简体中文译本
- 附录C 修订记录
- 术语表