Appearance
模块
一个.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 Pillow5. 安装常用模块 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本身的搜索路径不受影响。