- 模块是一个包含 Python 定义和语句的文件,文件名就是模块名加上
.py 后缀。例如,math.py 文件就是一个模块,模块可以将相关的代码组织在一起,提高代码的可维护性和复用性。
import 语句
- 基本语法:
import module_name - 示例:
import math
print(math.sqrt(16))
- 解释:使用
import 语句导入整个模块后,要使用模块中的函数或变量,需要通过 模块名.函数名 或 模块名.变量名 的方式调用。
from...import 语句
- 基本语法:
from module_name import function_name, variable_name - 示例:
from math import pi
print(pi)
- 解释:这种方式只导入模块中指定的函数或变量,使用时无需加模块名前缀。
from...import * 语句
- 基本语法:
from module_name import * - 示例:
from math import *
print(sqrt(25))
- 解释:导入模块中的所有函数和变量,但这种方式可能会导致命名冲突,不建议在大型项目中使用。
- 为模块或导入项指定别名
- 基本语法:
import module_name as alias 或 from module_name import function_name as alias - 示例:
import math as m
print(m.sqrt(9))
from math import sqrt as square_root
print(square_root(4))
- Python 在导入模块时,会按照以下顺序搜索模块:
- 内置模块:Python 解释器自带的模块,如
math、sys 等。 - 当前目录:即运行 Python 脚本所在的目录。
- 环境变量
PYTHONPATH 中指定的目录。 - Python 安装目录下的
site-packages 目录。
import sys
print(sys.path)
- 创建一个
.py 文件,在文件中定义函数、类、变量等。例如,创建一个 my_module.py 文件:
def add(a, b):
return a + b
def subtract(a, b):
return a - b
- 在另一个 Python 文件中导入并使用自定义模块:
import my_module
result = my_module.add(3, 5)
print(result)
- 每个模块都有一个
__name__ 属性,当模块作为脚本直接运行时,__name__ 属性的值为 '__main__';当模块被导入时,__name__ 属性的值为模块名。 - 可以利用
__name__ 属性来区分模块是直接运行还是被导入:
def add(a, b):
return a + b
if __name__ == '__main__':
result = add(2, 3)
print(result)
- 包是一种组织 Python 模块的方式,它是一个包含多个模块的目录,该目录下必须包含一个
__init__.py 文件(Python 3.3 之后,__init__.py 文件不是必需的,但为了兼容性,建议保留)。
- 创建一个目录作为包名,在该目录下创建
__init__.py 文件和其他模块文件。例如,创建一个名为 my_package 的包:
my_package/
__init__.py
module1.py
module2.py
def greet():
return "Hello from module1!"
def farewell():
return "Goodbye from module2!"
- 导入整个包
import my_package
result = my_package.module1.greet()
print(result)
- 从包中导入特定模块
from my_package import module2
result = module2.farewell()
print(result)
- 从包中的模块导入特定函数或变量
from my_package.module1 import greet
result = greet()
print(result)
__init__.py 文件可以为空,也可以包含初始化代码或导入语句。例如,在 __init__.py 中导入 module1 和 module2 中的函数:
from .module1 import greet
from .module2 import farewell
import my_package
result1 = my_package.greet()
result2 = my_package.farewell()
print(result1)
print(result2)
setuptools 是 Python 中常用的打包工具,以下是一个简单的 setup.py 文件示例:
from setuptools import setup, find_packages
setup(
name='my_package',
version='0.1',
packages=find_packages(),
)
- 在包含
setup.py 文件的目录下,执行以下命令进行打包:
python setup.py sdist bdist_wheel
- 这将生成源代码分发包(
.tar.gz 文件)和二进制分发包(.whl 文件)。
pip install dist/my_package-0.1.tar.gz
pip install dist/my_package-0.1-py3-none-any.whl