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  

函数的组成部分:

  1. 定义关键词 def:声明函数的开始。
  2. 函数名:需遵循变量命名规则(如 add_numbers)。
  3. 参数列表:括号内的输入变量(如 a, b)。
  4. 函数体:缩进的代码块,执行具体操作。
  5. 返回值 return:可选,用于输出结果。

比喻:函数就像餐厅的菜单项。顾客(调用者)点“牛排”(函数名),厨房(函数体)根据分量(参数)烹饪,并将成品(返回值)端出。


函数调用的两种方式

  1. 直接调用:通过函数名和参数调用:
    print(max(10, 20))  # 输出:20  
    
  2. 赋值调用:将函数结果存储在变量中:
    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,计算长方形的面积(长 × 宽)。要求:

  • 参数名称为 lengthwidth
  • 若参数为负数,返回 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,接收两个参数 ab,并执行以下操作:

  1. a 修改为 a * 2
  2. b 修改为 b + 5
  3. 返回修改后的 ab

参考答案

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 函数的核心概念,包括定义、参数类型、作用域规则以及高级技巧如装饰器。函数不仅是代码复用的基石,更是解决复杂问题的工具。建议读者通过以下步骤巩固知识:

  1. 实践练习:完成本文提供的习题,并尝试设计自己的函数场景。
  2. 阅读源码:分析开源项目中函数的设计模式。
  3. 参与测验:通过在线平台(如 LeetCode)的函数相关题目提升技能。

掌握函数后,开发者将能够更高效地组织代码逻辑,为后续学习面向对象编程、算法设计等进阶内容奠定基础。


关键词布局说明

  • 标题与章节标题自然融入关键词“Python测验——函数”
  • 内容中通过“函数练习题”“函数测验”等变体覆盖核心主题
  • 无强制重复,确保阅读流畅性

最新发布