Skip to content

函数

本节目标

学完这一节后,你应该能做到:

  • 理解函数为什么存在
  • 会定义函数
  • 会调用函数
  • 会写参数和返回值
  • 能区分 printreturn
  • 知道默认参数、作用域、匿名函数的基本用途

先修知识

建议你已经掌握:

  • 变量
  • 条件语句
  • 循环语句

因为函数内部经常会用到这些基础能力。

一、为什么需要函数

假设你有一个需求:反复输出欢迎语。

如果不用函数,可能会这样写:

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

为什么 xNone
因为 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. 参数个数不对

你定义需要两个参数,调用时只传一个,就会报错。

十三、本节练习

  1. 写一个函数,接收姓名并输出欢迎语
  2. 写一个函数,接收两个数并返回它们的和
  3. 写一个函数,接收一个成绩并返回等级
  4. 写一个函数,带默认参数,输出“某人来自某城市”

十四、本节小结

这一节最重要的不是把每种函数写法全背下来,而是建立正确思维:

  • 函数是为了复用逻辑
  • 参数是输入
  • 返回值是输出
  • printreturn 不一样

当你真正掌握了函数,代码结构会比以前清晰很多。

Built with VitePress.