为什么需要函数?¶
在编程中,函数就像一个“代码工具包”。如果你需要重复执行某段代码(比如打印问候语、计算两个数的和),直接写重复的代码会让程序变得冗长且难以维护。函数可以帮你把这段代码“打包”起来,起个名字,之后直接调用这个名字就能执行,既节省时间又能保证代码的一致性。
函数的基本语法¶
Python中定义函数非常简单,核心是使用 def 关键字,语法结构如下:
def 函数名(参数1, 参数2, ...):
"""函数的功能说明(可选,但推荐)"""
# 函数体:具体要执行的代码(必须缩进)
语句1
语句2
# 返回结果(可选)
return 结果
def:定义函数的关键字,不能省略。- 函数名:自定义,需符合变量命名规则(字母、数字、下划线,不能以数字开头,不能用Python关键字如
if、for)。 - 参数:括号内的变量(如
name、a、b),用于接收外部传入的数据(如果不需要参数,括号也可留空)。 - 函数体:冒号后的代码块,必须缩进(通常4个空格),这是Python区分代码块的关键。
return:返回函数执行结果(如果没有return,默认返回None)。
定义你的第一个函数¶
示例1:最简单的“无参数、无返回值”函数¶
比如,定义一个函数打印一句问候语:
# 定义函数
def say_hello():
# 函数体:缩进4个空格
print("Hello, Python!")
print("这是我的第一个函数~")
调用函数:直接写函数名加括号(即使无参数):
# 调用函数
say_hello()
输出结果:
Hello, Python!
这是我的第一个函数~
示例2:带参数和返回值的函数¶
定义一个函数计算两个数的和:
# 定义函数,参数a和b
def add_numbers(a, b):
result = a + b # 计算两数之和
return result # 返回结果
调用函数:需要传入两个参数(位置对应):
# 调用函数并接收返回值
sum_result = add_numbers(3, 5)
print("3 + 5 =", sum_result) # 输出:3 + 5 = 8
函数调用的关键点¶
- 参数传递:必须按定义时的顺序传递参数(位置参数),也可以用
参数名=值的形式传递(关键字参数)。
def greet(name, message):
print(f"{message}, {name}!")
greet("Alice", "Good morning") # 位置参数
greet(message="Good evening", name="Bob") # 关键字参数(顺序可换)
- 返回值处理:函数的返回值需要用变量接收,否则无法使用。
def multiply(x, y):
return x * y
product = multiply(4, 5) # 必须接收返回值
print(product) # 输出:20
- 无返回值:如果函数没有
return,调用后不会得到结果,但仍会执行函数体。
def print_hi():
print("Hi there!")
result = print_hi() # 执行后无返回值,result = None
print(result) # 输出:None
常见问题与注意事项¶
- 缩进错误:函数体必须缩进(4个空格),否则Python会报错。
def add(a, b):
print(a + b) # 错误!没有缩进,会报 IndentationError
-
函数名重复:如果多次定义同名函数,后面的会覆盖前面的,需注意命名唯一性。
-
参数不匹配:调用时参数数量必须与定义时一致(除非有默认参数)。
def greet(name):
print(f"Hello, {name}")
greet("Charlie") # 正确(1个参数)
greet("Charlie", "Bob") # 错误(2个参数,定义时只有1个)
小练习:动手写一个函数¶
尝试定义一个函数 area_of_rectangle,接收长和宽作为参数,返回矩形面积。然后调用函数验证结果:
# 定义函数
def area_of_rectangle(length, width):
return length * width
# 调用函数,传入参数
length = 5
width = 3
area = area_of_rectangle(length, width)
print(f"矩形面积:{area}") # 预期输出:15
总结¶
函数是Python代码复用的核心工具,掌握定义和调用函数后,你可以把复杂逻辑拆分成独立模块,让代码更简洁、易维护。后续还可以学习参数默认值、关键字参数、可变参数等进阶用法,但打好基础(理解缩进、参数、返回值)是关键哦!