为什么要学函数:代码的"乐高积木"
写代码写到后面,最烦的事情是"同样的逻辑写好几遍":计算平均分要写一遍,算 BMI 又要写一遍。函数就是把这些重复逻辑打包成一块"积木",叫一次用一次,改一处处处生效。
函数也是团队合作的基石:把大任务拆成小函数,每个人写一个,最后拼起来。学函数,是从"写脚本"走向"写程序"的分水岭。
不会函数的人写代码是"复制粘贴",会函数的人是"搭积木"。
- def定义函数。
- 参数输入数据。
- return输出结果。
- import引入模块。
def:定义你的第一个函数
def 是 define(定义)的缩写。函数名 + 冒号 + 缩进的函数体,就是这个函数的所有内容。
def say_hello():
print("你好,世界!")
say_hello()
say_hello()
定义函数不会立刻执行里面的代码,只有"调用"(写函数名加括号)才会执行。调用两次就打印两次,不用重复写代码。
参数:给函数喂数据
函数想处理不同的数据,就要有"参数"——写在括号里,调用时按顺序传值。
def greet(name):
print("你好," + name + "!")
greet("小明")
greet("小红")
参数让一个函数变成"模板",喂什么数据就输出什么结果。多个参数用逗号隔开,顺序要记牢。
返回值:函数吐结果
有的函数只是"做事情"(打印),有的函数需要"交出结果"给别人用,这时候用 return 返回。
def add(a, b):
return a + b
total = add(3, 5)
print(total) # 8
return 会立刻结束函数,后面的代码不再执行。函数一旦 return,调用处就拿到了结果,可以存进变量继续用。
作用域:函数里外的变量
函数里面创建的变量叫"局部变量",只在函数内有效;函数外面的是"全局变量",全局可见。名字可以一样,但它们是两个不同的盒子。
score = 100 # 全局变量
def show():
score = 0 # 局部变量,不影响外面的
print(score) # 0
show()
print(score) # 100
新手最容易在这踩坑:想在函数里改全局变量,要加 global 关键字,但更推荐的做法是把值传进传出,少用全局变量。
模块:import 别人的工具箱
Python 自带了大量"模块",就是别人写好的函数库。import 一下就能用:random 随机、math 数学、time 时间。
import random
import math
print(random.randint(1, 100))
print(math.sqrt(16)) # 4.0
用模块就是"站在别人的肩膀上":随机数、三角函数、日期时间,都是现成的,别自己造轮子。
自定义模块与小练习
把自己写的函数存进一个 .py 文件,就变成了"自定义模块",别的程序可以 import 它。把常用工具函数放进 tools.py,到处复用,是程序员的日常。
小练习:写一个"计算器模块"——定义 add、sub、mul、div 四个函数存进 calc.py,再写一个主程序 import calc 调用它们。做完这个练习,函数和模块的基本功就扎实了。
- def定义 + 调用。
- return交结果。
- 局部变量别和全局混。
- import复用一切。