深学 DeepLearn纯静态学习平台 · 借鉴 DeepTutor

3. 函数与模块:让代码可复用

def 定义函数、参数与返回值、import 使用模块——从「脚本」走向「工程」的门槛。

约 9 分钟3 道测验 6 张抽认卡

定义函数:给代码起个名字

def study_minutes(chapters, minutes_each=9):
    """计算一条学习线需要多少分钟。"""     # 文档字符串
    return chapters * minutes_each

print(study_minutes(15))          # 135 —— 不传就用默认值 9
print(study_minutes(15, 5))       # 75

三要素:def + 参数 + return。没有 return 的函数返回 None。

返回多个值?其实是元组

def min_max(nums):
    return min(nums), max(nums)

low, high = min_max([3, 1, 4, 1, 5])    # 解包:low=1, high=5

可变参数:*args 与 **kwargs

def log(level, *tags, **extra):
    print(level, tags, extra)

log('INFO', 'api', 'slow', cost=1.2)
# INFO ('api', 'slow') {'cost': 1.2}

模块:站在标准库肩膀上

import math
math.sqrt(2)              # 1.4142135623730951

from datetime import date
date.today()              # 今天的日期

import random
random.choice(['复习', '测验', '打卡'])   # 随机挑一个学习任务

一个 .py 文件就是一个模块;把相关模块放进文件夹就成了包。不重复造轮子——先查标准库,再查第三方库。

主模块判断

def add(a, b):
    return a + b

if __name__ == '__main__':
    print(add(2, 3))    # 只有直接运行本文件才会执行

这样同一份代码既可以当脚本跑,也可以被别人 import 而不触发演示输出。

💡 进阶提示:默认参数陷阱(def f(items=[]))是面试高频题——默认值只创建一次,可变默认值会被所有调用共享。

✍️章节测验(3 题)

选好后点击提交,成绩会记录到数据库,帮你追踪掌握情况。

  1. 1. 函数 return a, b 返回的是什么?

  2. 2. 以下哪种默认参数写法是有名的「坑」?

  3. 3. if __name__ == '__main__': 这行代码的作用是?

进度加载中…