Python零基础入门(五):模块与包导入
我见过一个Python项目,所有代码塞在一个文件里,3000多行。
找个函数要滚动5分钟,改一行代码冒出来3个bug。
后来学会了模块,代码拆成十几个文件,每个文件200行,世界清净了。
一、模块就是.py文件
# calculator.pydef add(a, b): return a + bdef subtract(a, b): return a - b
在另一个文件里用:
# main.pyimport calculatorprint(calculator.add(10, 5)) # 15
就这么简单。一个.py文件就是一个模块。
二、四种导入方式
1. 标准导入
import mathprint(math.sqrt(16)) # 4.0
2. 起别名
import numpy as npimport pandas as pd
社区约定俗成,跟着写就行。
3. 按需导入
from math import sqrt, piprint(sqrt(25)) # 5.0
不用写math.前缀,更简洁。
4. 全量导入(别用)
from math import * # 不推荐!
把math里所有东西都导入,容易命名冲突。
三、__name__的魔法
# greet.pydef hello(name): return f"你好,{name}!"if __name__ == "__main__": print(hello("世界"))
规则:
- • 直接运行:
__name__等于"__main__" - • 被导入:
__name__等于模块名"greet"
作用:只有直接运行时才执行测试代码,被导入时跳过。
四、包:模块的文件夹
my_project/├── main.py└── mathlib/ # 这是一个包 ├── __init__.py # 标识这是包 ├── basic.py └── advanced.py
导入包里的模块:
from mathlib import basicprint(basic.add(1, 2))
或者:
from mathlib.basic import addprint(add(1, 2))
五、常用标准库
import jsonfrom datetime import datetimedata = { "name": "小明", "time": datetime.now().isoformat()}print(json.dumps(data, ensure_ascii=False))
六、pip安装第三方包
# 安装pip install requests# 查看已安装pip list# 导出依赖pip freeze > requirements.txt# 批量安装pip install -r requirements.txt
新手必装:
下一篇预告:异常处理——让程序优雅地处理错误。