模块是什么
一个 .py 文件 = 一个模块。把相关函数 / 变量放一起,需要时 import。
# math_utils.py
def add(a, b):
return a + b
def square(x):
return x ** 2
PI = 3.14159
# main.py
import math_utils
print(math_utils.add(1, 2))
print(math_utils.PI)
import 的几种姿势
# 1. 整模块
import math_utils
math_utils.add(1, 2)
# 2. 只引部分
from math_utils import add, PI
add(1, 2) # 不用前缀
print(PI)
# 3. 引并改名
import math_utils as mu
mu.add(1, 2)
from math_utils import add as plus
plus(1, 2)
# 4. 全部引(不推荐!污染命名空间)
from math_utils import *
标准库的常见 import
import os # 操作系统
import sys # 解释器接口
import json # JSON 处理
import datetime # 日期时间
import random # 随机
from pathlib import Path # 路径处理
from collections import Counter, defaultdict
包:多模块组织
文件夹 + __init__.py 就是一个包:
mypkg/
├── __init__.py # 标记这是一个包
├── utils.py
└── parser.py
from mypkg import utils
from mypkg.parser import parse
name == "main"
模块同时被 import 和直接运行时区分:
# my_tool.py
def main():
print("跑工具")
if __name__ == "__main__":
main() # 直接 python my_tool.py 才执行
# 被 import 时不执行
这是 Python 的标准入口写法。
模块查找路径
import 时 Python 按这个顺序找:
- 当前脚本所在目录
PYTHONPATH环境变量列出的目录- 标准库目录
- site-packages(pip 装的第三方)
查 / 改路径:
import sys
print(sys.path) # 当前查找路径列表
sys.path.append("/my/path") # 临时加
相对 import vs 绝对 import
# 绝对(推荐)
from mypkg.utils import helper
# 相对(仅在包内部)
from .utils import helper # 同级
from ..other import something # 上一级
下一篇讲标准库速览——Python 自带哪些好东西。