Skip to content

模块

一个.py文件就称之为一个模块(Module)。

好处:

  • 提高代码的可维护性:将代码分成多个模块,每个模块负责一个特定的功能,使得代码更易于维护和调试。
  • 提高代码的可重用性:将常用的功能封装成模块,其他程序可以直接导入并使用这些模块,避免重复编写相同的代码。
  • 提高代码的可读性:将代码分成多个模块,每个模块负责一个特定的功能,使得代码更易于阅读和理解。

Python本身就内置了很多非常有用的模块,只要安装完毕,这些模块就可以立刻使用。

1. 标准文件模板

我们以内建的sys模块为例,编写一个hello的模块:

python
#!/usr/bin/env python3
# -*- coding: utf-8 -*-

' a test module '

__author__ = 'ly'

import sys

def test():
    args = sys.argv
    if len(args)==1:
        print('Hello, world!')
    elif len(args)==2:
        print('Hello, %s!' % args[1])
    else:
        print('Too many arguments!')

if __name__=='__main__':
    test()
  • 第1行和第2行是标准注释,第1行注释可以让这个hello.py文件直接在Unix/Linux/Mac上运行,第2行注释表示.py文件本身使用标准UTF-8编码;
  • 第4行是一个字符串,表示模块的文档注释,任何模块代码的第一个字符串都被视为模块的文档注释;
  • 第6行使用__author__变量把作者写进去,这样当你公开源代码后别人就可以瞻仰你的大名;

以上就是Python模块的标准文件模板,当然也可以全部删掉不写,但是,按标准办事肯定没错。

2. 导入模块

  • 导入整个模块: import module_name
  • 导入整个模块,重命名模块: import module_name as mn
  • 导入单个类、函数、变量 : from module_name import class_name
  • 导入多个类、函数、变量 : from module_name import class_name_1, class_name_2
  • 导入所有类 : from module_name import *

3. 作用域

  • 正常的函数和变量名是公开的
    • 例如: def public_fun():
    • 这样,外部就可以直接调用public_fun()函数了。
  • 类似__xxx__这样的变量是特殊变量,可以被直接引用,但是有特殊用途,比如上面的__author__
  • 类似_xxx和__xxx这样的函数或变量就是非公开的(private),不应该被直接引用,比如_abc__abc
    • private函数和变量“不应该”被直接引用,而不是“不能”被直接引用,是因为Python并没有一种方法可以完全限制访问private函数或变量,但是,从编程习惯上不应该引用private函数或变量。

4. 安装第三方模块

在Python中,安装第三方模块,是通过包管理工具pip完成的。

一般来说,第三方库都会在Python官方的pypi.python.org网站注册,要安装一个第三方库,必须先知道该库的名称,可以在官网或者pypi.python.org上搜索,比如Pillow的名称叫Pillow,因此,安装Pillow的命令就是:

bash
pip install Pillow

5. 安装常用模块 Anaconda

在使用Python时,我们经常需要用到很多第三方库,例如,上面提到的Pillow,以及MySQL驱动程序,Web框架Flask,科学计算Numpy等。用pip一个一个安装费时费力,还需要考虑兼容性。我们推荐直接使用Anaconda,这是一个基于Python的数据处理和科学计算平台,它已经内置了许多非常有用的第三方库,我们装上Anaconda,就相当于把数十个第三方模块自动安装好了,非常简单易用。

mac 安装 Anaconda

https://www.anaconda.com/products/distribution#macos 下载对应的版本,图形界面安装

anaconda
[ ˌænəˈkɒndə ]
蟒蛇

安装好Anaconda后,重新打开命令行窗口,输入python,可以看到Anaconda的信息:

bash
>python3
Python 3.13.5 | packaged by Anaconda, Inc. | (main, Jun 12 2025, 11:23:37) [Clang 14.0.6 ] on darwin
Type "help", "copyright", "credits" or "license" for more information.

6. 模块搜索路径

当我们试图加载一个模块时, 默认情况下,Python会搜索当前目录、所有已安装的内置模块和第三方模块,搜索路径存放在sys模块的sys.path变量中:

bash
>>> import sys
>>> sys.path
['', '/usr/local/lib/python313.zip', '/usr/local/lib/python3.13', '/usr/local/lib/python3.13/lib-dynload', '/usr/local/lib/python3.13/site-packages']

如果我们要添加自己的搜索目录,有两种方法:

一是直接修改sys.path,添加要搜索的目录:

bash
>>> import sys
>>> sys.path.append('/Users/ly/Documents/code/coolo/blog-new/books/python')

第二种方法是设置环境变量PYTHONPATH,该环境变量的内容会被自动添加到模块搜索路径中。设置方式与设置Path环境变量类似。注意只需要添加我们自己的搜索路径,Python本身的搜索路径不受影响。

京ICP备2024093538号-1