Python 测验 – 函数(建议收藏)
💡一则或许对你有用的小广告
欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论
- 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于
Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...
,点击查看项目介绍 ;- 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/ ;
截止目前, 星球 内专栏累计输出 82w+ 字,讲解图 3441+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 2900+ 小伙伴加入学习 ,欢迎点击围观
前言
在编程世界中,函数如同乐高积木,是构建复杂程序的基础模块。无论是初学者还是中级开发者,掌握函数的使用规则与最佳实践,都是提升代码复用性和可维护性的关键。本文将以 “Python 测验 – 函数” 为主题,通过知识点讲解、案例分析和实战练习,帮助读者系统性地理解 Python 函数的核心概念,并为后续的进阶学习打下坚实基础。
函数基础:定义与调用
什么是函数?
函数是封装特定功能的代码块,通过名称调用即可执行。例如,计算两个数的和可以定义为一个函数:
def add_numbers(a, b):
return a + b
result = add_numbers(3, 5)
print(result) # 输出:8
函数的组成部分:
- 定义关键词
def
:声明函数的开始。 - 函数名:需遵循变量命名规则(如
add_numbers
)。 - 参数列表:括号内的输入变量(如
a, b
)。 - 函数体:缩进的代码块,执行具体操作。
- 返回值
return
:可选,用于输出结果。
比喻:函数就像餐厅的菜单项。顾客(调用者)点“牛排”(函数名),厨房(函数体)根据分量(参数)烹饪,并将成品(返回值)端出。
函数调用的两种方式
- 直接调用:通过函数名和参数调用:
print(max(10, 20)) # 输出:20
- 赋值调用:将函数结果存储在变量中:
max_value = max([5, 3, 8]) print(max_value) # 输出:8
参数详解:灵活传递数据
1. 位置参数(Positional Arguments)
参数的顺序决定其对应关系:
def greet(name, message):
print(f"{name}, {message}!")
greet("Alice", "Hello") # 输出:Alice, Hello!
若调换顺序则结果会错误:
greet("Hello", "Alice") # 输出:Hello, Alice!
2. 关键字参数(Keyword Arguments)
通过参数名指定值,避免顺序依赖:
greet(message="Goodbye", name="Bob") # 输出:Bob, Goodbye!
3. 默认参数(Default Arguments)
为参数提供默认值,调用时可省略:
def send_email(to, subject="No Subject", content=""):
print(f"To: {to}\nSubject: {subject}\nContent: {content}")
send_email("alice@example.com", content="Hi!")
比喻:默认参数如同快递服务中的“默认地址”。若未指定,系统会自动填入预设值。
4. 可变参数(Variable-Length Arguments)
(1) *args
:收集额外的位置参数
def sum_all(*numbers):
total = 0
for num in numbers:
total += num
return total
print(sum_all(1, 2, 3, 4)) # 输出:10
(2) **kwargs
:收集关键字参数
def show_info(**details):
for key, value in details.items():
print(f"{key}: {value}")
show_info(name="Charlie", age=25, city="New York")
参数类型对比表格
参数类型 | 语法形式 | 用途说明 |
---|---|---|
位置参数 | param1, param2 | 按顺序传递值 |
关键字参数 | key=value | 通过名称指定参数 |
默认参数 | param=default | 提供参数的默认值 |
可变位置参数 | *args | 收集多余的位置参数为元组 |
可变关键字参数 | **kwargs | 收集多余的关键字参数为字典 |
函数作用域:变量的“可见范围”
1. 局部变量与全局变量
在函数内部定义的变量默认为局部变量,无法在外部访问:
def test_scope():
local_var = 100
print(local_var) # 报错:NameError
若需修改全局变量,需使用 global
关键字:
global_var = 50
def modify_global():
global global_var
global_var = 100
modify_global()
print(global_var) # 输出:100
2. 闭包(Closure)
函数可以记住并访问其定义时的外部变量:
def outer_function():
message = "Hello"
def inner_function():
print(message)
return inner_function
my_func = outer_function()
my_func() # 输出:Hello
比喻:闭包如同一个带有记忆功能的快递分拣员,即使外层函数执行完毕,仍能记住之前的包裹信息。
高阶函数与装饰器
1. 高阶函数
接受函数作为参数或返回函数的函数:
def apply_operation(a, b, func):
return func(a, b)
result = apply_operation(5, 3, lambda x, y: x * y)
print(result) # 输出:15
2. 装饰器(Decorator)
通过 @decorator
语法修改函数行为:
def log_decorator(func):
def wrapper():
print("函数开始执行")
func()
print("函数执行结束")
return wrapper
@log_decorator
def say_hello():
print("Hello!")
say_hello()
比喻:装饰器如同快递分拣系统的“智能标签机”,在包裹(函数)进入流程前自动添加追踪信息(日志功能)。
Python函数练习题
题目1:函数基础
题目:编写一个函数 calculate_area
,计算长方形的面积(长 × 宽)。要求:
- 参数名称为
length
和width
- 若参数为负数,返回
0
参考答案:
def calculate_area(length, width):
if length < 0 or width < 0:
return 0
return length * width
print(calculate_area(5, -3)) # 输出:0
题目2:参数与作用域
题目:定义函数 modify_values
,接收两个参数 a
和 b
,并执行以下操作:
- 将
a
修改为a * 2
- 将
b
修改为b + 5
- 返回修改后的
a
和b
参考答案:
def modify_values(a, b):
a *= 2
b += 5
return a, b
x = 3
y = 4
new_x, new_y = modify_values(x, y)
print(new_x, new_y) # 输出:6 9
题目3:装饰器应用
题目:创建一个装饰器 timer
,记录函数的执行时间。例如:
@timer
def my_function():
# ...
my_function()
参考答案:
import time
def timer(func):
def wrapper(*args, **kwargs):
start_time = time.time()
result = func(*args, **kwargs)
end_time = time.time()
print(f"函数 {func.__name__} 执行耗时:{end_time - start_time:.4f} 秒")
return result
return wrapper
@timer
def example():
time.sleep(0.5)
example()
结论
通过本文的学习,读者应能掌握 Python 函数的核心概念,包括定义、参数类型、作用域规则以及高级技巧如装饰器。函数不仅是代码复用的基石,更是解决复杂问题的工具。建议读者通过以下步骤巩固知识:
- 实践练习:完成本文提供的习题,并尝试设计自己的函数场景。
- 阅读源码:分析开源项目中函数的设计模式。
- 参与测验:通过在线平台(如 LeetCode)的函数相关题目提升技能。
掌握函数后,开发者将能够更高效地组织代码逻辑,为后续学习面向对象编程、算法设计等进阶内容奠定基础。
关键词布局说明:
- 标题与章节标题自然融入关键词“Python测验——函数”
- 内容中通过“函数练习题”“函数测验”等变体覆盖核心主题
- 无强制重复,确保阅读流畅性