CC++ & Algorithm

函数的定义与调用

中等0
语言版本:C++
概述:函数就像给一段代码取个名字,需要时直接喊名字就能执行,不用重复写。

让代码听话:函数的定义与调用

你有没有玩过这样的游戏?给一个虚拟宠物下指令:“坐下”“握手”“转圈”,宠物就会执行对应的动作。在Python里,函数就像你给代码起的“指令名字”。你可以把一串要重复使用的代码打包成一个函数,以后只要喊它的名字(加一对括号),这段代码就会自动执行,再也不用复制粘贴了。

什么是函数?

想象你有一个玩具机器人,你给它编了一个“跳舞”的程序。以后每次你对它说“跳舞”,它就会执行一连串的动作:转圈、挥手、蹦跳。在Python中,函数就像是给一段代码起了一个名字,当你需要执行这段代码时,只需“调用”这个名字即可,不用每次都重新写一遍。

函数的好处可多了:

  • 避免重复 – 同样的代码只用写一次,想用几次用几次。
  • 代码清晰 – 把复杂任务拆成一个个小函数,读起来像讲故事。
  • 方便修改 – 如果某段逻辑要改,只改函数内部,其他地方全部自动更新。

定义函数:教会机器人新动作

定义函数就是“教会”机器人一个动作。使用关键字 def,后面跟函数名和一对圆括号,最后加冒号。函数体(要执行的代码)需要缩进。

# 定义一个叫“say_hello”的函数
def say_hello():
    print("你好!")
    print("欢迎来到Python世界!")

函数名要见名知意,比如 say_hello 一看就是打招呼。括号里暂时空的,以后可以放参数。冒号和缩进(通常4个空格)告诉Python哪些代码属于这个函数。

调用函数:喊出它的名字

定义好函数后,在代码中写函数名加括号,就会执行函数里的代码。这叫“调用函数”。

# 调用函数
say_hello()
# 输出:
# 你好!
# 欢迎来到Python世界!

注意:函数必须先定义再调用。就像你没教会机器人跳舞之前,喊“跳舞”它不会理你。

参数:让函数更灵活

函数还可以接收“参数”,就像对机器人说“跳舞3次”。在定义时,括号里放一个变量名;调用时,在括号里放具体的值。

def greet(name):
    print("你好," + name + "!")

greet("小明")  # 输出:你好,小明!
greet("小红")  # 输出:你好,小红!

这里的 name 就是参数,每次调用时可以传入不同的名字。参数可以有很多个,用逗号隔开:

def show_score(name, score):
    print(name + "考试得了" + str(score) + "分")

show_score("小红", 95)  # 输出:小红考试得了95分
show_score("小明", 88)  # 输出:小明考试得了88分

生活例子:你有一个朋友,你教它一个“买零食”函数,参数是零食名称和数量。每次你说“买零食(薯片, 2)”,它就知道买2包薯片。

返回值:函数还能给你“回信”

函数不仅能做事,还能给你一个结果。用 return 语句把结果送回来。

def add(a, b):
    return a + b

result = add(3, 5)   # result 得到返回值 8
print(result)        # 输出:8

return 会立即结束函数,并把后面的值送回给调用者。这个值可以赋值给变量,也可以直接用在表达式中。

另一个例子:计算零花钱平均每天花多少。

def daily_avg(total_money, days):
    return total_money / days

avg = daily_avg(300, 30)  # 30天花了300元
print("平均每天花", avg, "元")

参数默认值:给参数一个“备用值”

有些参数大部分时候是同一个值,可以给它一个默认值。调用时如果不传,就使用默认值。

def say_hello(name="同学"):
    print("你好," + name + "!")

say_hello()        # 输出:你好,同学!
say_hello("老师")  # 输出:你好,老师!

新手容易犯的5个错误

  1. 忘记括号

    say_hello    # 错误!没加括号只表示函数对象,不会执行
    say_hello()  # 正确
    
  2. 少写冒号

    def greet(name)   # 错误!缺少冒号
        print(...)
    
  3. 缩进不对:函数体必须缩进,而且同一函数的缩进要一致(通常4个空格)。

    def test():
    print("缩进错误")  # 这行没有缩进,报错
    
  4. 定义后没调用:定义函数只是“教”了机器人,不喊它名字它不会动。记得在主代码中调用。

  5. 在 return 后面写代码return 一执行函数就结束,后面的代码永远不会运行。

    def test():
        return 10
        print("这行不会执行")  # 死代码
    

完整可运行的示例:计算考试平均分

下面是一个完整程序,用函数计算三个学生的平均分,并判断是否及格(>=60为及格)。

# 定义函数:计算平均分
def calc_avg(score1, score2, score3):
    total = score1 + score2 + score3   # 总分
    avg = total / 3                    # 平均分
    return avg

# 定义函数:判断是否及格
def is_pass(avg_score):
    if avg_score >= 60:
        return "及格"
    else:
        return "不及格"

# 主程序:输入三个成绩(整数)
score_a = 78  # 第一科成绩
score_b = 85  # 第二科成绩
score_c = 92  # 第三科成绩

average = calc_avg(score_a, score_b, score_c)  # 调用求平均函数
result = is_pass(average)                      # 调用判断函数

print("平均分:", average)
print("结果:", result)

运行输出:

平均分: 85.0
结果: 及格

相关指引

你已经学会了函数的定义、调用、参数和返回值。接下来可以探索:

  • 内置函数:Python自带的函数,比如 print()len()input(),可以直接用。
  • 函数嵌套:在一个函数内部调用另一个函数。
  • 递归:函数自己调用自己,解决像“汉诺塔”“斐波那契”等问题。
  • 模块:把很多函数放进一个文件,用 import 导入使用。

函数是编程世界里最基础也最强大的工具。就像你学会了“给机器人下指令”,以后可以指挥代码干更多有趣的事!

例题精讲

1单选题

以下关于Python函数定义的说法,哪一个是正确的?

A函数定义以关键字'function'开头
B函数体必须用大括号括起来
C函数定义以关键字'def'开头,后跟函数名和圆括号
D函数定义必须包含return语句
2单选题

执行以下代码后,输出结果是什么? def add(a, b): return a + b result = add(3, 5) print(result)

A35
B8
C15
D报错
3判断题

在Python中,一个函数可以没有return语句,也可以没有参数。

4填空题
请补全下面定义函数并调用的代码,使其计算两个数的乘积并打印结果。
def multiply(x, y):
    ___  # 计算乘积并返回
result = multiply(4, 6)
___  # 打印结果
5填空题
以下代码中,函数greet的定义缺少了参数。请补全,使得调用greet('Alice')输出'Hello, Alice!'。
def greet(___):
    print('Hello, ' + name + '!')
greet('Alice')