定义函数:给代码起个名字
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=[]))是面试高频题——默认值只创建一次,可变默认值会被所有调用共享。