15 分钟
Python 入门

自定义模块

学会创建和使用自己的模块

  • 创建自己的 .py 模块
  • import 自定义模块
  • 理解 __name__ == '__main__'

什么是模块

每个 .py 文件就是一个模块。把相关函数放一个文件里,其他文件导入就能用。

创建并使用模块

示例代码(可运行)

from...import 用法

示例代码(可运行)

__name__ == '__main__'

当文件被直接运行时,__name__ 是 '__main__';被导入时是模块名。这样模块可以自测又不影响导入者:

示例代码(可运行)
💡模块的好处

把代码拆分到不同文件,每个文件负责一个功能。代码更清晰、可复用、可维护。这是工程化的第一步。

预测输出
# mymodule.py
x = 42
# main.py
import mymodule
print(mymodule.x)
找 Bug模块顶层的代码在被 import 时就会执行。测试代码应该放在 if __name__ == '__main__' 中。
# mytools.py def greet(): print("Hi") greet() # 导入时就会执行 # main.py import mytools # 会打印 "Hi"
填空题填写空白处的代码
# mytools.py def greet(name): print("Hi", name) # main.py mytools mytools.greet("小明")
选择题

文件被 import 时 __name__ 的值是?

选择题

自定义模块文件的扩展名是?

资深工程师加餐

底层原理 · 大厂视角 · 工程经验,点卡片展开

Python 里整数、字符串甚至函数都是对象,堆在内存里;变量不是装东西的盒子,而是一张贴在对象上的「名字标签」(引用)。id(x) 看对象身份,is 比身份、== 比值。CPython 会缓存 -5~256 的小整数,所以 a=1;b=1 时 a is b 为 True,但 a=300;b=300 未必。结论:判断值是否相等永远用 ==,判断是不是 None 才用 is。

挑战任务

自定义模块

简单+50 XP

创建工具模块包含 add 和 subtract,导入使用。

自定义模块
2 个测试用例

课后作业

数学工具包

中等+20 XP

创建包含加减乘除的模块并导入使用。

数学工具包
1 个测试用例