当前位置: 首页 > ai >正文

Python学习(3) ----- Python的函数定义及其使用

Python 中函数是组织好的、可重复使用的代码块,用于实现单一或相关联的功能。下面是函数定义和使用的完整说明:


📌 一、函数定义语法

def 函数名(参数1, 参数2=默认值, *args, **kwargs):"""函数说明文档"""函数体return 返回值

✅ 二、简单示例

def greet(name):return f"Hello, {name}!"result = greet("Alice")
print(result)  # 输出: Hello, Alice!

🔸 三、参数类型详解

1. 位置参数

def add(a, b):return a + bprint(add(3, 5))  # 输出 8

2. 默认参数

def greet(name, message="Hi"):return f"{message}, {name}!"print(greet("Tom"))            # Hi, Tom!
print(greet("Tom", "Hello"))   # Hello, Tom!

3. 可变参数 (*args)

args是可以自己命名的,这里的类型是元组(tuple)
tuple的特点
在这里插入图片描述

def sum_all(*args):return sum(args)print(sum_all(1, 2, 3))  # 6

4. 关键字参数 (**kwargs)

适用于字典类型的入参,kwargs是可以自己命名的,这里的类型是字典(dict)

def show_info(**kwargs):for key, value in kwargs.items():print(f"{key}: {value}")show_info(name="Alice", age=30)
# 输出:
# name: Alice
# age: 30

🔁 四、返回值

单值返回:

def square(x):return x * x

多值返回(返回元组):

def get_user():return "Tom", 25name, age = get_user()

♻️ 五、函数作为变量传递

def say_hello():print("Hello")greet = say_hello
greet()  # Hello

📖 六、带文档的函数

def square(x):"""返回数字的平方"""return x * xprint(square.__doc__)  # 返回函数说明文档

✅ 七、匿名函数(lambda)

square = lambda x: x * x
print(square(5))  # 25

常用于排序、过滤等场景:

nums = [3, 1, 2]
nums.sort(key=lambda x: -x)

🧠 八、函数的好习惯

  • 使用明确的函数名和参数名
  • 编写函数文档字符串("""说明文字"""
  • 尽量保持函数短小和单一职责

下面是几道精选的 Python 函数练习题,每道题都有题目说明提示,适合巩固函数的定义与使用。


🧪 练习题 1:写一个求最大值的函数

题目:编写一个函数 get_max(a, b),返回两个数中的最大值。

def get_max(a, b):# TODO: 返回较大的那个数passprint(get_max(10, 20))  # 应该输出 20

提示:使用 if...else 判断大小。


🧪 练习题 2:列表求和(可变参数)

题目:编写一个函数 sum_all(*args),接收任意数量的参数,并返回它们的总和。

def sum_all(*args):# TODO: 返回所有参数的总和passprint(sum_all(1, 2, 3))        # 输出 6
print(sum_all(5, 10, 15, 20))  # 输出 50

提示:使用 sum() 函数或 for 循环遍历 args


🧪 练习题 3:计算 BMI 指数

题目:写一个函数 bmi(weight, height),根据体重(kg)和身高(米)计算 BMI = 体重 / 身高²。

def bmi(weight, height):# TODO: 返回 BMI 指数passprint(bmi(60, 1.7))  # 应该输出大约 20.76

提示:BMI 的单位是 kg/m²,保留小数可用 round(bmi, 2)


🧪 练习题 4:欢迎语(带默认参数)

题目:定义一个函数 greet(name, message="Hello"),默认打招呼用 “Hello”,可以自定义问候语。

def greet(name, message="Hello"):# TODO: 打印 message, name!passgreet("Tom")          # Hello, Tom!
greet("Alice", "Hi")  # Hi, Alice!

🧪 练习题 5:分析用户信息(关键字参数)

题目:定义函数 print_info(**kwargs),可以接受任意键值对,并打印它们。
kwargs也可以叫其他名字主要是前面有**标识

def print_info(**kwargs):# TODO: 遍历打印每一个 key: valuepassprint_info(name="Tom", age=22, city="Shanghai")

提示:用 for key, value in kwargs.items() 遍历。


可以尝试把这些函数写进一个 .py 文件里,比如 my_functions.py

python my_functions.py

http://www.xdnf.cn/news/9628.html

相关文章:

  • OpenLayers 加载网格信息
  • [CISCN 2021初赛]glass
  • 【第2章 绘制】2.15 剪辑区
  • 【摄影教程】
  • 使用jessibuca+wvp+zlm实现html无插件播放摄像头实时画面
  • promise详细总结
  • VTK|Z轴拉伸功能的实现
  • 【Redis】通用命令
  • 使用Milvus运行一个Milvus单机版实例
  • 什么是 SRM、ERP、SCM,如何科学选型采购系统
  • 【Python】 -- 趣味代码 - 皮卡丘
  • 打造卓越客户支持体验:知识共享驱动服务优化
  • 利用openwrt路由器和随身WIFI搭建CPE
  • 世界模型:AGI突破口?一文了解NVIDIA Cosmos 平台
  • PyTorch 入门学习笔记
  • 【Python】 -- 趣味代码 - 数字游戏
  • 从 0 开始学习大模型应用开发(加餐二)- 使用Spring AI开发MCP系统
  • Java 事务管理:在分布式系统中实现可靠的数据一致性
  • Micro-CT扫描成像的样本处理与样本要求技术指南
  • 浅谈国企数字化转型
  • 2025年5月通信科技领域周报(5.19-5.25):太赫兹通信规模商用启动 空天地一体化网络加速落地
  • “从复眼到智慧”:观测云2025发布会专访—— CEO 蒋烁淼
  • Python兴趣匹配算法:从理论到实战的进阶指南
  • Echarts实现3D地图(多层geo)同步缩放
  • LangChain + Redis:实现持久化的聊天历史记录管理
  • 华为认证是什么?网络工程师的华为认证考试详解
  • ActiveMQ 可观测性最佳实践
  • 日立HDS G350存储Dynamic Link Manager(HDLM)在linux系统多路径绑定
  • ChatGPT + 知网 + 知乎,如何高效整合信息写出一篇专业内容?
  • 多元素纳米颗粒:开启能源催化新纪元