五、函数:教给员工一套动作
第 25~29 课
学到这块有一个明显的分水岭:之前是「敲代码」,之后是「写程序」。区别就在于——能不能把重复的逻辑打包成可复用的工具。
第 25 课 函数是什么
函数 = 把一段重复的活打包、起个名字,以后喊名字就整套跑。
三件事:def 是「定义」,函数里的内容要缩进,调用就是 函数名加括号。
第 26 课 参数与返回值
只有「喊一声就干」的函数是死的(每次都干一样的事)。要它灵活,得能「收材料」和「交结果」:
def nianzu(rent): # rent 是参数:等着接你递进来的值
return rent * 12 # return:把结果交回调用处
print(nianzu(4500)) # 54000
print(nianzu(5200)) # 62400
比喻:nianzu 是你教员工的「算年租」流程,rent 是递进去的材料,return 是员工交回来的结果。同一个函数递不同的值,出不同的结果——函数就「活」了。
第 27 课 默认参数与关键字参数
大多数时候利率是固定的,偶尔才改。给它个默认值:
def zhinajin(jine, lilv=0.05): # 利率默认 5%
return jine * lilv
zhinajin(10000) # 用默认 → 500.0
zhinajin(10000, 0.1) # 指定 → 1000.0
zhinajin(lilv=0.1, jine=10000) # 关键字传参,顺序随意 → 1000.0
按名字传参(lilv=、jine=)可以不管顺序,代码也更清楚。
第 28 课 作用域:函数内外的变量
规则:函数里面的变量,外面拿不到;外面的变量,函数里能读。
x = 10 # 全局变量
def f():
y = 5 # 局部变量
print(x) # 能读外面的 → 10
print(y) # 能读自己的 → 5
f()
print(y) # ❌ NameError: name 'y' is not defined
y 是员工自己抽屉里的东西,你(函数外)看不到。方向记一条就够:外面 → 里面能读,里面 → 外面读不到。
第 29 课 把「挑欠费」抽成函数
把第 24 课的裸写逻辑,封装成一个能反复用的工具:
def chaxun_qianfei(tenants):
qianfei = []
for t in tenants:
if t["状态"] == "欠费":
qianfei.append(t["姓名"])
return qianfei
参数 + return + 循环 + 判断 + 列表——前面学的全在这了。以后任何一份租户名单,都能直接调它查欠费,不用重抄一遍。
这就是函数真正的价值:写一次,用无数次;要改,只改一处。