Python编程实战 - 函数与模块化编程 - 参数与返回值

在上一节中,我们学习了如何定义和调用函数,了解了函数的基本结构。 然而,在实际编程中,函数往往需要更强的灵活性,比如:

  • 能接受不同数量、类型的输入参数;
  • 能根据情况返回一个或多个结果。

本节我们将深入学习 函数的参数类型返回值机制,让你掌握函数的核心逻辑与应用技巧。


一、函数参数的作用

参数是函数与外部数据沟通的桥梁。 通过参数,函数可以在不同场景下复用同一逻辑,而不必重复编写相似的代码。


二、函数参数的类型

Python 的函数参数非常灵活,主要分为以下几类:

1. 位置参数(Positional Arguments)

最常见的参数类型,调用时必须按顺序传值。

python 复制代码
def greet(name, age):
    print(f"你好,{name},你今年 {age} 岁啦!")

greet("小明", 18)

调用时必须保证参数数量一致,否则会报错。


2. 关键字参数(Keyword Arguments)

调用函数时可以通过指定参数名来传值,顺序可以不同。

python 复制代码
def show_info(name, city):
    print(f"{name} 来自 {city}")

show_info(city="北京", name="小红")

这种方式可读性更强,尤其适合参数较多的函数。


3. 默认参数(Default Arguments)

给参数设置默认值,使函数更灵活。

python 复制代码
def connect(host="localhost", port=3306):
    print(f"正在连接服务器:{host}:{port}")

connect()                      # 使用默认值
connect("192.168.1.1", 8080)   # 传入新值

默认参数常用于配置型函数,比如数据库连接、API请求等。


4. 可变参数(*args)

当不确定会传入多少个参数时,可以使用 *args。 它会将所有位置参数打包成一个元组。

python 复制代码
def add(*nums):
    total = sum(nums)
    print("总和为:", total)

add(1, 2, 3)
add(5, 10, 15, 20)

输出:

复制代码
总和为: 6
总和为: 50

5. 关键字可变参数(**kwargs)

当参数是键值对形式时,可以使用 **kwargs,它会将所有关键字参数打包成一个字典。

python 复制代码
def show_user(**info):
    print(info)

show_user(name="小李", age=20, city="广州")

输出:

arduino 复制代码
{'name': '小李', 'age': 20, 'city': '广州'}

**kwargs 常用于可配置型函数,比如日志记录、数据存储、API请求。


6. 参数的组合使用

Python 支持在一个函数中混合使用多种参数类型:

python 复制代码
def func(a, b=10, *args, **kwargs):
    print(a, b, args, kwargs)

func(1, 2, 3, 4, x=5, y=6)

输出:

arduino 复制代码
1 2 (3, 4) {'x': 5, 'y': 6}

注意:参数定义顺序固定为 位置参数默认参数可变参数关键字可变参数


三、函数的返回值

函数通过 return 语句将结果返回给调用者。 返回值可以是任意类型,也可以是多个值。

1. 单个返回值

python 复制代码
def square(x):
    return x * x

print(square(5))  # 25

2. 多个返回值(返回元组)

python 复制代码
def calc(a, b):
    return a + b, a - b

result = calc(10, 3)
print(result)         # (13, 7)
sum_val, diff_val = calc(10, 3)
print(sum_val, diff_val)  # 13 7

Python 实际上是将多个值打包成一个元组返回的。


3. 无返回值(隐式返回 None)

python 复制代码
def greet(name):
    print(f"你好,{name}")

result = greet("Tom")
print(result)

输出:

css 复制代码
你好,Tom
None

当函数没有 return 时,Python 会自动返回 None


四、return 的执行特点

  1. 一旦执行 return,函数立即结束;
  2. 函数中可以有多个 return,但只会执行第一个被触发的;
  3. 可以用 return 提前结束函数逻辑。

示例:

python 复制代码
def divide(a, b):
    if b == 0:
        return "除数不能为0"
    return a / b

print(divide(10, 2))  # 5.0
print(divide(10, 0))  # 除数不能为0

五、实战案例:购物结算函数

需求:

  • 接收任意数量的商品价格;
  • 计算总价;
  • 可选打折参数;
  • 返回最终金额。
python 复制代码
def checkout(*prices, discount=1.0):
    """购物结算函数"""
    total = sum(prices)
    pay = total * discount
    return round(pay, 2)

print(checkout(100, 200, 300))
print(checkout(100, 200, 300, discount=0.9))

输出:

复制代码
600.0
540.0

六、总结

参数类型 特点 示例
位置参数 按顺序传值 func(1, 2)
关键字参数 指定参数名 func(a=1, b=2)
默认参数 设置默认值 def func(a=1)
可变参数 接收任意数量的位置参数 *args
关键字可变参数 接收任意数量的键值参数 **kwargs

七、小结

  • 参数让函数更加灵活,return 让函数能输出结果;
  • *args**kwargs 是 Python 的"可扩展接口";
  • 返回值可以是任何类型,甚至是函数本身(这将在高阶函数中讲到);
  • 写函数时,应保持输入清晰、返回明确、逻辑单一。

结语: 掌握函数的参数与返回值,你就能编写出灵活、可复用的代码模块。

相关推荐
Katecat996634 分钟前
YOLO11分割算法实现甲状腺超声病灶自动检测与定位_DWR方法应用
python
野犬寒鸦5 分钟前
从零起步学习并发编程 || 第七章:ThreadLocal深层解析及常见问题解决方案
java·服务器·开发语言·jvm·后端·学习
玩大数据的龙威30 分钟前
农经权二轮延包—各种地块示意图
python·arcgis
ZH154558913132 分钟前
Flutter for OpenHarmony Python学习助手实战:数据库操作与管理的实现
python·学习·flutter
belldeep42 分钟前
python:用 Flask 3 , mistune 2 和 mermaid.min.js 10.9 来实现 Markdown 中 mermaid 图表的渲染
javascript·python·flask
喵手42 分钟前
Python爬虫实战:电商价格监控系统 - 从定时任务到历史趋势分析的完整实战(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·零基础python爬虫教学·电商价格监控系统·从定时任务到历史趋势分析·采集结果sqlite存储
喵手1 小时前
Python爬虫实战:京东/淘宝搜索多页爬虫实战 - 从反爬对抗到数据入库的完整工程化方案(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·零基础python爬虫教学·京东淘宝页面数据采集·反爬对抗到数据入库·采集结果csv导出
Honmaple1 小时前
OpenClaw 实战经验总结
后端
B站_计算机毕业设计之家1 小时前
猫眼电影数据可视化与智能分析平台 | Python Flask框架 Echarts 推荐算法 爬虫 大数据 毕业设计源码
python·机器学习·信息可视化·flask·毕业设计·echarts·推荐算法
PPPPPaPeR.1 小时前
光学算法实战:深度解析镜片厚度对前后表面折射/反射的影响(纯Python实现)
开发语言·python·数码相机·算法