10·模块三:函数入门

函数定义与调用

functionsdefparameters

Python 编程:从零基础到精通

第 10 课 - 函数定义与调用

所属模块: 模块三:函数 难度: beginner 标签: functions, def, parameters 上一课: 列表、字典与集合推导式 下一课: 函数参数(位置、关键字、默认值)


1. 学习目标

完成本课学习后,你将能够:

  • 理解什么是函数以及为什么需要使用函数。
  • 使用 def 关键字正确地定义一个函数。
  • 正确地调用已定义的函数。
  • 理解函数参数(形参和实参)的基本概念,并为函数传递参数。
  • 理解函数返回值 return 的作用。

2. 核心概念

想象一下,你经常需要向不同的人问好:"你好,张三!", "你好,李四!"。每次都要写print("你好,XX!")会很麻烦。函数就像一个"代码盒子",你把执行某个任务的代码放进去,给这个盒子起个名字。以后需要完成这个任务时,只需要喊出这个名字(调用函数),盒子里的代码就会自动运行,还可以向盒子里传递不同的信息(参数)。

  • 函数定义: 使用 def 关键字来"创建"这个盒子。
    def 函数名(参数列表):
        函数体(代码块)
    
  • 函数调用: 写出函数的名字,后面跟上括号(),来"启动"这个盒子。
    函数名(参数值)
    
  • 参数(形参与实参):
    • 形参: 定义函数时,在括号里写的变量名,相当于盒子内部预留的"插槽"。
    • 实参: 调用函数时,传递给函数的具体数据,相当于插入"插槽"的"插头"。
  • 返回值: 函数可以用 return 语句把一个结果"送出来"。如果没有 return,函数默认返回 None

3. 代码示例

示例1:定义并调用一个最简单的函数

# 定义一个名为 greet 的函数,没有参数
def greet():
    print("你好!欢迎学习Python函数。")

# 调用函数 greet
greet()

输出:

你好!欢迎学习Python函数。

示例2:带参数的函数

# 定义一个函数,有一个参数 name(形参)
def greet_by_name(name):
    print(f"你好,{name}!")

# 调用函数,并传递实参 "小明"
greet_by_name("小明")
# 再次调用,传递不同的实参
greet_by_name("小红")

输出:

你好,小明!
你好,小红!

示例3:带返回值的函数

# 定义一个函数,计算两个数的和,并返回结果
def add_numbers(a, b):
    sum_result = a + b
    return sum_result  # 将计算结果返回给调用者

# 调用函数,并将返回的结果赋值给变量 `total`
total = add_numbers(3, 5)
print(f"3 + 5 的结果是:{total}")

# 也可以直接在 print 语句中调用函数
print(f"10 + 20 的结果是:{add_numbers(10, 20)}")

输出:

3 + 5 的结果是:8
10 + 20 的结果是:30

4. 实践练习

练习1(简单): 定义一个名为 print_line 的函数,它不接收任何参数。函数的功能是打印一行由20个短横线 "-" 组成的字符串。然后,调用这个函数两次。

练习2(中等): 定义一个名为 calculate_area 的函数,它接收两个参数:length(长)和 width(宽)。函数的功能是计算并返回长方形的面积(面积 = 长 * 宽)。使用这个函数计算一个长为7、宽为4的长方形的面积,并打印结果。

练习3(挑战): 编写一个函数 is_adult,它接收一个参数 age(年龄)。函数的功能是:

  • 如果年龄大于或等于18,则返回字符串 "成年人"
  • 否则,返回字符串 "未成年"。 调用这个函数,并传入年龄 2515,将结果打印出来。

5. 常见错误

  1. 忘记函数定义末尾的冒号 :

    # 错误
    def my_func()
        print("Hello")
    
    # 正确
    def my_func():
        print("Hello")
    
  2. 函数体没有正确缩进

    # 错误 - 代码没有缩进,不属于函数体
    def my_func():
    print("Hello")
    
    # 正确 - 函数体必须缩进(通常用4个空格)
    def my_func():
        print("Hello")
    
  3. 在定义函数之前就调用它

    # 错误 - 调用 `my_func` 时,函数还未被定义
    my_func()
    
    def my_func():
        print("Hello")
    
    # 正确 - 先定义,后调用
    def my_func():
        print("Hello")
    
    my_func()
    
  4. 混淆 printreturn

    # 错误示范:想用函数返回一个值,但用了 print
    def bad_add(a, b):
        print(a + b)  # 只是打印,没有返回值,调用者拿不到结果
    
    result = bad_add(1, 2)  # result 的值是 None,而不是 3
    print(result)  # 输出 None
    
    # 正确做法:使用 return
    def good_add(a, b):
        return a + b  # 将结果返回
    
    result = good_add(1, 2)  # result 的值是 3
    print(result)  # 输出 3
    

6. 小结

  • 函数是什么? 一个封装了可重用代码块的工具,通过名字(函数名)来调用。
  • 如何定义? 使用 def 关键字,后面跟函数名、括号和冒号,函数体需要缩进。
  • 参数: 在定义时(形参)占位,在调用时(实参)传入具体数据,实现函数的灵活通用。
  • 返回值: 使用 return 关键字将函数内部的计算结果传递出来,供后续使用。一个函数可以没有 return,也可以有多个 return(但通常只会执行第一个)。
  • 核心步骤: 先定义,后调用。没有定义的函数无法调用;定义了不调用,函数就不会执行。

掌握了函数的基本定义与调用,我们就迈出了代码结构化、模块化的第一步。在下一课,我们将深入学习函数参数的不同类型,让函数变得更加强大和易用!

练习编辑器

python
Loading...

继续学习

完成本课后,建议继续学习下一课「函数参数(位置、关键字、默认值)」 以巩固所学知识。