Python基础:函数定义与参数基础
文章目录
一、知识点详解
1.1 函数的概念及作用
- 函数是什么?
通俗理解:
函数像一个可重复使用的工具盒,将代码打包命名,需用时直接调用名称完成特定任务。
编程定义:
函数
:通过def
关键字定义的代码块,可接收输入(参数)、处理数据并返回结果。
核心特点:封装性
:隐藏内部实现,使用者仅关注功能。复用性
:一次定义,多次调用。
-
为什么需要函数?
★ 1. 解决代码重复问题
应用场景:多个地方需执行相同操作(如计算平均数、打印表格)。
对比示例:# 重复代码(不推荐) print("=====学生成绩=====") print("姓名: 张三") print("总分: 280") print("=================") print("=====学生成绩=====") print("姓名: 李四") print("总分: 295") print("=================") # 使用函数优化 def print_score(name, total): print("=====学生成绩=====") print(f"姓名: {name}") print(f"总分: {total}") print("=================") print_score("张三", 280) print_score("李四", 295)
★ 2. 提高代码可读性
复杂任务分解:将大问题拆分为小函数(如“注册用户”拆分为验证密码、保存数据等函数)。
命名即注释:好的函数名直接说明功能(如validate_email
比if...else
更易懂)。★ 3. 方便维护和调试
集中修改:修改函数内部代码,所有调用处自动生效。
降低错误:减少重复代码 → 更少出错可能。
-
什么时候用函数?
1. 常见应用场景
场景 示例 重复代码块 打印格式化表格、计算平均值 复杂任务分解 用户注册(验证、保存、发邮件) 数据处理 清洗数据、转换格式 工具类操作 生成随机数、时间格式化 2. 判断标准
当一段代码被使用 超过 2 次,或代码块超过 5 行,建议封装为函数。
1.2 形参与实参(核心概念)
-
形参
(Formal Parameter)
定义:函数定义时括号内的参数,用于接收外部传入的值。
特点:仅存在于函数内部,作用域为函数体,生命周期仅在函数执行期间有效。 -
实参
(Actual Parameter)
定义:函数调用时传递的具体值或变量。
特点:可以是常量、变量、表达式等。 -
示例:
# 形参:a, b def add(a, b): return a + b # 实参:3, 5 result = add(3, 5) # 实参传递给形参 a 和 b
1.3 函数的定义
-
核心作用:封装重复代码为可复用模块,提高可读性和维护性。
-
定义语法:
def 函数名(参数1, 参数2, ...): """文档字符串(描述函数功能)""" 代码块 return 返回值 # 可选
-
代码规范:
函数名:全小写字母,单词间用下划线连接(如calculate_area
)。
参数:多个参数用逗号分隔,可接收任意数据类型。
缩进:函数体必须缩进(通常 4 个空格)。 -
示例:
def greet(name): """向指定用户发送问候语""" print(f"你好呀, {name}!")
1.4 函数的调用
-
基础调用:通过函数名加括号执行函数,传递必要参数。
# 调用函数,传递实参 greet("小美") # 输出:你好呀, 小美!
-
执行流程:
1. 解释器找到greet
函数定义。
2. 将参数"小美"
(实参)传递赋值给name
(形参)。
3. 执行函数体内的代码。
1.5 参数传递方式
-
1.
位置参数
(必选参数)
规则:实参按顺序一一对应形参。
示例:def my_pet(animal_type, pet_name): print(f"我有一只{animal_type},它叫{pet_name}。") # 正确调用:位置参数按顺序传递 my_pet("猫", "小黑") # 输出:我有一只猫,它叫小黑。 # 错误调用:顺序颠倒导致逻辑错误 my_pet("小黑", "猫") # 输出:我有一只小黑,它叫猫。 ❌
-
2.
关键字参数
规则:通过形参名=值
指定参数,可打乱顺序。
示例:my_pet(pet_name="小白", animal_type="狗") # 正确 → 输出:我有一只狗,它叫小白。
-
3.
混合使用
位置参数与关键字参数
规则:
1. 位置参数必须在前,关键字参数在后。
2. 不可重复对同一形参赋值。
正确示例:my_pet("仓鼠", pet_name="布丁") # 输出:我有一只仓鼠,它叫布丁。
错误示例:
my_pet(pet_name="布丁", "仓鼠") # ❌ 位置参数必须在关键字参数前 my_pet("布丁", animal_type="仓鼠") # ❌ 重复赋值("布丁"→animal_type,animal_type又被指定)
-
4.
无参数
函数
函数可以没有参数,直接执行固定操作。def say_hi(): print('你好啊!') say_hi() # 输出: 你好啊!
二、说明示例
场景 1:计算矩形面积
def rectangle_area(length, width):
"""计算矩形面积"""
area = length * width
print(area)
# 调用方式 1:位置参数
rectangle_area(4, 5) # 20
# 调用方式 2:关键字参数
rectangle_area(width=5, length=4) # 20
场景 2:判断数字正负
def check_number(num):
"""判断数字正负"""
if num > 0:
print("正数")
elif num < 0:
print("负数")
else:
print("零")
check_number(10) # 正数
check_number(-5) # 负数
check_number(0) # 零
三、知识点总结
-
函数概念
函数是什么:可重复使用的代码工具包。
核心作用:减少重复代码、提高可读性、方便维护。
何时使用:重复操作或复杂任务分解时。 -
形参实参:
形参:函数定义时的参数。
实参:函数调用时传入的具体值。 -
定义调用:
定义函数:使用def
关键字,指定函数名和参数。
调用函数:通过函数名加括号传递参数。
返回值:使用return
返回结果(可选)。 -
参数传递规则:
位置参数按顺序传递。
关键字参数通过参数名指定,可打乱顺序。
混合使用时,位置参数必须在前。
可以没有参数。
四、知识点考察题
def test(a, b, c):
print(a + b + c)
以下参数传递方式正确的是( ) ❓
- A.
test(1, b=2, 3)
- B.
test(1, 2, a=3)
- C.
test(a=1, b=2, d=3)
- D.
test(b=1, c=2, a=3)
答案:D
解析:
A. test(1, b=2, 3)
❌
错误原因:位置参数必须在关键字参数前,第3个参数3
(位置参数)不能出现在b=2
(关键字参数)之后
B. test(1, 2, a=3)
❌
错误原因:重复赋值,形参a
已通过位置参数赋值为1
,不能再通过关键字参数赋值为3
C. test(a=1, b=2, d=3)
❌
错误原因:函数无参数d
,存在未定义参数
D. test(b=1, c=2, a=3)
✅
正确原因:全用关键字参数可打乱顺序,参数名与形参完全匹配,无重复赋值