函数
本节目标
学完这一节后,你应该能做到:
- 理解函数为什么存在
- 会定义函数
- 会调用函数
- 会写参数和返回值
- 能区分
print和return - 知道默认参数、作用域、匿名函数的基本用途
先修知识
建议你已经掌握:
- 变量
- 条件语句
- 循环语句
因为函数内部经常会用到这些基础能力。
一、为什么需要函数
假设你有一个需求:反复输出欢迎语。
如果不用函数,可能会这样写:
python
print("欢迎学习 Python")
print("欢迎学习 Python")
print("欢迎学习 Python")现在看起来还好,但如果这段逻辑要出现 20 次、50 次,代码就会变得非常重复。
函数就是用来解决“重复逻辑”问题的。
二、什么是函数
函数可以理解成:
“把一段完成某个任务的代码单独起个名字,后面需要时直接调用。”
三、定义函数
最基础的函数写法:
python
def say_hello():
print("你好")这里:
def表示定义函数say_hello是函数名()表示参数位置- 缩进部分表示函数体
四、调用函数
定义函数不等于执行函数。
只有你真的调用它,它才会运行。
python
def say_hello():
print("你好")
say_hello()输出:
text
你好五、函数参数
参数就是函数运行时需要接收的外部数据。
python
def greet(name):
print(f"你好,{name}")
greet("小明")
greet("小红")输出:
text
你好,小明
你好,小红你可以把参数理解成:函数先预留一个位置,等调用时再把具体值传进来。
六、函数返回值
有些函数不是为了“打印结果”,而是为了“把结果交回来”。
python
def add(a, b):
return a + b
result = add(3, 5)
print(result)输出:
text
8这里的关键点是 return。
七、print 和 return 的区别
这是初学者很容易混淆的点。
print
只是把内容显示出来。
return
是把结果返回给外部,方便后面继续使用。
看这个对比:
python
def show_sum(a, b):
print(a + b)
def get_sum(a, b):
return a + b
x = show_sum(2, 3)
y = get_sum(2, 3)
print("x =", x)
print("y =", y)输出:
text
5
x = None
y = 5为什么 x 是 None?
因为 show_sum() 只是打印了 5,并没有返回结果。
八、默认参数
当某个参数“通常有一个固定值,但也允许修改”时,很适合写默认参数。
python
def introduce(name, city="北京"):
print(f"{name} 来自 {city}")
introduce("小明")
introduce("小红", "上海")输出:
text
小明 来自 北京
小红 来自 上海九、作用域
函数内部定义的变量,通常只能在函数内部使用。
python
def demo():
inner_name = "函数内部变量"
print(inner_name)
demo()输出:
text
函数内部变量如果你在函数外面直接访问 inner_name,通常会报错,因为它的作用范围只在函数内部。
十、匿名函数
匿名函数就是没有正式名字的简短函数,一般写成 lambda。
python
square = lambda x: x * x
print(square(4))输出:
text
16它适合写特别短的小逻辑,不适合写复杂业务。
十一、一个完整小例子:成绩判断函数
python
def check_score(score):
if score >= 90:
return "优秀"
elif score >= 60:
return "及格"
else:
return "不及格"
result = check_score(85)
print(result)输出:
text
及格这个例子把你前面学过的:
- 条件语句
- 参数
- 返回值
都串起来了。
十二、常见错误
1. 定义了函数但忘记调用
很多新手以为“函数写完就会自动执行”,其实不会。
2. 把 print() 当成返回值
打印了结果,不等于把结果交给外部。
3. 参数个数不对
你定义需要两个参数,调用时只传一个,就会报错。
十三、本节练习
- 写一个函数,接收姓名并输出欢迎语
- 写一个函数,接收两个数并返回它们的和
- 写一个函数,接收一个成绩并返回等级
- 写一个函数,带默认参数,输出“某人来自某城市”
十四、本节小结
这一节最重要的不是把每种函数写法全背下来,而是建立正确思维:
- 函数是为了复用逻辑
- 参数是输入
- 返回值是输出
print和return不一样
当你真正掌握了函数,代码结构会比以前清晰很多。