当前位置:首页 > 技术 > 正文内容

Python函数定义与使用完全指南

访客 技术 2026年5月28日 2

在Python开发中,函数作为程序架构的基础单元,承担着代码复用和逻辑封装的重要职责。通过将复杂问题拆解为若干独立的功能模块,开发者能够编写出结构清晰、易于维护的代码。本文将深入探讨Python函数的核心概念与实用技巧。

函数的基本定义

语法结构

Python使用def关键字声明函数,完整的基本语法如下:

def function_name(parameters):
    """函数说明文档"""
    function_body
    return return_value

下面是一个实现数值比较的示例函数:

def compare(first, second):
    """比较两个数值的大小,返回较大的那个"""
    if first > second:
        return first
    return second

max_value = compare(15, 28)

该函数接收两个参数进行比较,并返回较大的数值。函数名称compare明确表达其功能用途,first和second作为形参接收调用时传入的实际数据。

文档字符串详解

文档字符串(docstring)放置在函数体之前,用于说明函数功能、参数类型及返回值含义。通过函数的__doc__属性可以随时查看:

def power(base, exponent):
    """
    计算底数的指定次幂结果。
    :param base: 底数,支持整数或浮点数类型
    :param exponent: 幂次方,要求为数值类型
    :return: 底数的exponent次幂运算结果
    """
    return base ** exponent
print(power.__doc__)

规范的文档注释对团队协作和后期维护具有重要价值,能够帮助其他开发者快速理解函数用途。

函数参数传递机制

位置参数

位置参数按照定义顺序逐一传递,是最基础的参数形式:

def compute(dividend, divisor):
    return dividend / divisor
result = compute(100, 25)

此例中100对应dividend,25对应divisor,按照顺序依次匹配。

默认参数

为参数设置默认值后,调用时可选择性传递参数:

def welcome(message='Welcome'):
    print(f"{message}, Visitor!")
welcome()
welcome('Hello')

第一次调用使用默认值'Welcome',第二次调用传入新值'Hello'覆盖默认值。

可变参数

**args接收不确定数量的位置参数,结果以元组形式存储:

def aggregate(*values):
    product = 1
    for value in values:
        product *= value
    return product
result = aggregate(2, 3, 4, 5)

该函数计算所有参数的乘积,*values灵活处理任意数量的输入。

**kwargs处理关键字参数,以字典形式存储:

def display(**properties):
    for key, val in properties.items():
        print(f"{key}: {val}")
display(username='admin', role='moderator', level=5)

这里username、role、level作为键值对被kwargs收集并遍历输出。

混合参数类型

函数定义时各类参数的顺序有严格要求:位置参数 → 默认参数 → *args → **kwargs

def mixed_operation(first, second=10, *args, **options):
    print(f"first: {first}, second: {second}")
    print(f"args: {args}")
    print(f"options: {options}")
mixed_operation(5, 20, 30, 40, action='calculate', mode='fast')

参数first和second分别获得值5和20,后续的30、40进入args元组,action和mode进入options字典。

函数的返回值处理

单值返回

return语句将计算结果返回给调用方,支持任意数据类型:

import math

def circle_measure(r):
    return math.pi * r * r

area = circle_measure(7)

根据半径计算圆面积并返回结果。

多值返回

Python函数实际只能返回一个对象,但可通过容器类型实现多值效果:

def statistics(data):
    minimum = min(data)
    maximum = max(data)
    return minimum, maximum

result = statistics([12, 45, 67, 89, 23])
min_val, max_val = result

返回元组包含最小值和最大值,通过解包赋值给两个变量。

无返回值情况

缺少return语句或return后无表达式时,函数默认返回None:

def show():
    print("Processing complete...")
    
output = show()
print(output)  # 输出: None

仅执行打印操作,无明确返回值。

lambda匿名函数

定义语法

lambda提供单行函数定义能力,适用于简单场景:

cube = lambda x: x ** 3
result = cube(4)

该lambda函数计算立方值,cube变量指向该匿名函数对象。

典型应用场景

配合高阶函数使用是lambda的主要用途:

数据转换

data = [1, 2, 3, 4, 5]
processed = list(map(lambda item: item * 2, data))

map函数将lambda应用于每个元素,实现批量处理。

自定义排序

products = [
    {'name': 'Laptop', 'price': 5999},
    {'name': 'Mouse', 'price': 99},
    {'name': 'Keyboard', 'price': 299}
]
ranked = sorted(products, key=lambda p: p['price'])

lambda指定price作为排序依据,实现按价格升序排列。

总结

Python函数机制功能完善,支持灵活的参数传递方式和多样化的返回值处理。合理运用默认参数、可变参数能够增强函数的通用性,而lambda表达式则为函数式编程提供了便捷支持。掌握这些特性能够显著提升代码质量,实现更优雅的程序设计。

相关文章

Linux crontab 详解

1) crontab 是什么cron 是 Linux 的定时任务守护进程;crontab 是用来编辑/查看“按时间周期执行命令”的表(cron table)。常见两类:用户 crontab:每个用户一份(crontab -e 编辑)系统级 crontab / cron.d:可指定执行用户(/etc/crontab、/etc/cron.d/*)2) crontab 时间...

富文本里可以允许的 HTML 属性

一、所有标签默认允许的安全属性(极少)class        (可选)id           (通常建议禁用)title️ 注意:id 容易被滥用做锚点注入,很多系统直接禁用class 允许的话最好只允许固定前缀(如 editor-*)二、a 标签允许属性<a href="" t...

Mac 安装 Node.js 指南

方法一:通过官网安装包(最简单,适合初学者)如果你只是想快速安装并开始使用,这是最直接的方法。访问 Node.js 官网。页面会显示两个版本:LTS (Recommended For Most Users):长期支持版,最稳定。建议选这个。Current:最新特性版,包含最新功能但可能不够稳定。下载 .pkg 安装包并运行。按照安装向导点击“下一步”即可完成。方法二:使用 Homebrew 安装(...

Dom\HTML_NO_DEFAULT_NS 的副作用:自动加闭合标签

在使用Dom\HTMLDocument时,Dom\HTML_NO_DEFAULT_NS 将禁止在解析过程中设置元素的命名空间, 此设置是为了与DOMDocument向后兼容而存在的。当使用它时,已知的一个副作用就是:自动加闭合标签例如 </img> 为什么会这样?当你使用:Dom\HTML_NO_DEFAULT_NS文档会变成 无命名空间模式,此时内部更接近 XML...

Laravel 事件和监听器创建

在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:1. 手动创建单个 Event如果你只想创建一个事件类,可以使用 make:event 命令:Bashphp artisan make:event UserRegistered执行后,文件将生成在 app/Even...

自定义域名解析神器 dnsmasq

什么是 dnsmasq?dnsmasq 是一个轻量级、功能强大的网络服务工具,专为小型和中等规模网络设计。它是一个综合的网络基础设施解决方案[1]。dnsmasq 能做什么?功能说明应用场景DNS 转发与缓存将 DNS 查询转发到上游服务器(ISP、Google DNS 等),并在本地缓存结果加快 DNS 查询速度,减少外部 DNS 流量本地 DNS解析本地网络设备的主机名,无需编辑&n...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。