Python 函数的学习笔记
Python 函数的学习笔记
- 0. Python 函数的概要说明
- 1. 自定义函数示例
- 2. 匿名函数示例
- 3. 内置函数示例
- 3-1. filter() 示例
- 3-2. map() 示例
- 3-3. reduce() 示例
- 4. 可变长参数`*args`和`**kwargs`示例
- 4-1. `*args`(Positional Variadic Arguments)
- 4-2. `**kwargs`(Keyworded Variadic Arguments)
- 4-3. 结合使用`*args`和`**kwargs`
- 4-4. 解包参数
0. Python 函数的概要说明
在Python中,函数是一块组织好的、可重复使用的代码,用于执行单一、相关的动作。函数可以接受输入参数,也可以返回结果。使用函数可以让你编写更整洁、更可读、更易于维护的代码,同时也能够减少代码重复,提高开发效率。
下面是关于Python函数的一些介绍:
- 定义函数:
Python中使用def关键字来定义函数。函数定义包括函数名、参数列表(位于括号内)和冒号。函数体是缩进的代码块。
在这个例子中,def greet(name):"""这是一个简单的问候函数"""return f"Hello, {name}!"greet是一个接受一个参数name的函数,它返回一个包含名字的问候语。 - 函数参数:
- 位置参数:按照定义时的顺序传递的参数。
- 关键字参数:通过参数名来指定参数值的参数,这样可以不按照顺序传递参数。
- 默认参数:在定义函数时可以给参数指定默认值。
- 可变长参数:函数可以接受任意数量的参数,如
*args和**kwargs。
- 返回值:
函数可以使用return语句返回一个或多个值。如果没有return语句,函数会在执行完毕后自动返回None。 - 文档字符串(Docstrings):
Python函数通常包含一个文档字符串,这是一个位于函数定义下方第一行的字符串,用于解释函数的作用。可以使用"""或'''来定义文档字符串。 - 作用域:
函数内的变量作用域是局部的,意味着在函数外部无法访问这些变量。函数可以访问全局作用域的变量,但无法直接修改全局变量。如果需要在函数内部修改全局变量,可以使用global关键字声明。 - 匿名函数:
Python支持匿名函数,也称为Lambda函数。Lambda函数可以接受任何数量的参数,但只能有一个表达式。它们通常用于编写简单的、一次性的小函数。add = lambda x, y: x + y - 递归:
函数可以调用自身,这种操作称为递归。递归函数在处理分而治之的问题时非常有用,如树的遍历、阶乘计算等。 - 高阶函数:
Python函数是一等公民,可以作为参数传递给其他函数,也可以从其他函数返回,甚至可以被赋值给变量。能够接受函数作为参数或返回函数的函数称为高阶函数。
1. 自定义函数示例
示例代码,
def square(x):squared = x * xreturn squaredprint(square(2))
输出结果,
4
2. 匿名函数示例
示例代码,
square = lambda x: x * x
print(square(2))
输出结果,
4
3. 内置函数示例
示例代码,
filtered = list(filter(lambda x: x > 2, range(1, 5)))
filtered
输出结果,
[3, 4]
3-1. filter() 示例
示例代码,
filtered = list(filter(lambda x: x > 2, range(1, 5)))
filtered
输出结果,
[3, 4]
3-2. map() 示例
示例代码,
mapped = list(map(lambda x: x * x, range(1, 5)))
mapped
输出结果,
[1, 4, 9, 16]
3-3. reduce() 示例
示例代码,
from functools import reducereduced = reduce(lambda x, y: x + y, range(1, 5))
reduced
输出结果,
10
4. 可变长参数*args和**kwargs示例
在Python中,可变长参数允许函数接受任意数量的位置参数和关键字参数。这提供了极大的灵活性,使得函数可以处理不同数量和类型的参数。
4-1. *args(Positional Variadic Arguments)
*args允许你传递任意数量的非关键字参数给一个函数。在函数内部,*args被解释为一个元组。
示例,
def sum_all(*args):"""计算所有传入数字的和"""total = 0for num in args:total += numreturn total# 调用函数
print(sum_all(1, 2, 3, 4, 5)) # 输出: 15
在这个例子中,sum_all函数接受任意数量的参数,并将它们相加。当你调用sum_all(1, 2, 3, 4, 5)时,*args在函数内部被当作(1, 2, 3, 4, 5)这个元组来处理。
4-2. **kwargs(Keyworded Variadic Arguments)
**kwargs允许你传递任意数量的关键字参数给一个函数。在函数内部,**kwargs被解释为一个字典,其中键是参数名,值是参数值。
示例,
def print_info(**kwargs):"""打印所有传入的关键字参数"""for key, value in kwargs.items():print(f"{key}: {value}")# 调用函数
print_info(name='Alice', age=25, job='Engineer')
# 输出:
# name: Alice
# age: 25
# job: Engineer
在这个例子中,print_info函数接受任意数量的关键字参数,并打印它们。当你调用print_info(name='Alice', age=25, job='Engineer')时,**kwargs在函数内部被当作{'name': 'Alice', 'age': 25, 'job': 'Engineer'}这个字典来处理。
4-3. 结合使用*args和**kwargs
你可以在同一个函数中同时使用*args和**kwargs,这样可以处理任意数量的位置参数和关键字参数。
示例,
def func(*args, **kwargs):print("Positional arguments:", args)print("Keyword arguments:", kwargs)# 调用函数
func(1, 2, 3, a=4, b=5)
# 输出:
# Positional arguments: (1, 2, 3)
# Keyword arguments: {'a': 4, 'b': 5}
在这个例子中,func函数接受任意数量的位置参数和关键字参数,并分别打印它们。
4-4. 解包参数
你还可以在调用函数时使用*和**操作符来解包迭代器和字典,将它们作为参数传递给函数。
示例,
def multiply(x, y):return x * y# 已有元组和字典
numbers = (2, 3)
keywords = {'x': 4, 'y': 5}# 使用*和**解包元组和字典
print(multiply(*numbers)) # 等同于multiply(2, 3)
print(multiply(**keywords)) # 等同于multiply(x=4, y=5)
在这个例子中,multiply函数接受两个参数。通过使用*numbers,元组(2, 3)被解包成两个位置参数;通过使用**keywords,字典{'x': 4, 'y': 5}被解包成两个关键字参数。
完结!
相关文章:
Python 函数的学习笔记
Python 函数的学习笔记 0. Python 函数的概要说明1. 自定义函数示例2. 匿名函数示例3. 内置函数示例3-1. filter() 示例3-2. map() 示例3-3. reduce() 示例 4. 可变长参数*args和**kwargs示例4-1. *args(Positional Variadic Arguments)4-2. **kwargs&am…...
详解 Redis 实现数据去重
✨✨ 欢迎大家来到喔的嘛呀的博客✨✨ 🎈🎈希望这篇博客对大家能有帮助🎈🎈 目录 言 一. Redis去重原理 1. Redis Set 数据结构 2. 基于 Set 实现数据去重 3. 代码示例 4. 总结 …...
FreeRTOS 延迟中断处理
采用二值信号量同步 二值信号量可以在某个特殊的中断发生时,让任务解除阻塞,相当于让任务与中断 同步。这样就可以让中断事件处理量大的工作在同步任务中完成,中断服务例程(ISR) 中只是快速处理少部份工作。如此,中断处理可以说是…...
计网体系结构
计算机网络的概述 概念 网络:网状类的东西或系统。 计算机网络:是一个将分散的、具有独立性功能的计算机系统,通过通信设备与线路连接起来,由功能完善的软件实现资源共享和信息传递的系统。即计算机网络是互连(通过通信链路互连…...
linux系统zabbix工具监控web页面
web页面监控 内建key介绍浏览器配置浏览器页面查看方式 监控指定的站点的资源下载速度,及页面响应时间,还有响应代码; web Scenario: web场景(站点)web page :web页面,一个场景有多…...
VMware虚拟机网络配置
VMware虚拟机网络配置 桥接模式NAT网络 桥接模式 桥接模式其实就是借助你宿主机上的网卡进行联网和通信,所以相当于虚拟机和宿主机平级,处于同一个网段中。 配置要点: 注意选择正确的宿主机网卡 查看宿主机的网络信息,这些信息指…...
代码随想录算法训练营DAY18 | 二叉树 (5)
一、LeetCode 513 找树左下角的值 题目链接:513.找树左下角的值https://leetcode.cn/problems/find-bottom-left-tree-value/ 思路一:递归回溯全局变量比深度。 class Solution {int Max_depth 0;int result 0;public int findBottomLeftValue(TreeNo…...
企业微信自动推送机器人的应用与价值
随着科技的快速发展,企业微信自动推送机器人已经成为了企业数字化转型的重要工具。这种机器人可以自动推送消息、执行任务、提供服务,为企业带来了许多便利。本文将探讨企业微信自动推送机器人的应用和价值。 一、企业微信自动推送机器人的应用 企业微信…...
Matplotlib plt.plot:从入门到精通,只需一篇文章!
Matplotlib plt.plot:从入门到精通,只需一篇文章! 利用Matplotlib进行数据可视化示例 🌵文章目录🌵 📊 1. 引言:为什么Matplotlib在数据可视化中如此重要?📊✨ 2. plt.pl…...
Linux中sigaction函数和SIGCHLD信号的使用
sigaction函数: 函数说明:注册一个信号处理函数 函数原型:int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact); 函数参数: signum:捕捉的信号act:传入参数,…...
【MySQL】操作库 —— 表的操作 -- 详解
一、增加表 1、创建表 mysql> create database [if not exists] table_name ( -> field1 datatype, -> field2 datatype, -> field3 datatype -> ) character set 字符集 collate 校验规则 engine 存储引擎; 注意 :最后一行也可以写成&#x…...
ZigBee学习——在官方例程实现组网
✨Z-Stack版本:3.0.2 ✨IAR版本:10.10.1 ✨这篇博客是在善学坊BDB组网实验的基础上进行完善,并指出实现的过程中会出现的各种各样的问题! 善学坊教程地址: ZigBee3.0 BDB组网实验 文章目录 一、基础工程选择二、可能遇…...
ES实战--wildcard正则匹配exists过滤字段是否存在
wildcard 通配符中的 * 表示任意数量的字符 ?表示任意单个字符 #正则匹配 GET /wildcard-test/_search {"query": {"wildcard": {"title": {"wildcard": "ba*n"}}} } #响应:"hits": {"total": {"…...
C++学习:二分查找
二分查找的前提 库函数只能对数组进行二分查找。 对一个数组进行二分查找的前提是这个数组中的元素是单调的。 一般为单调不减,当然如果是单调不增也可以(需要修改比较函数) 例如: [1,5,5,9,18]是单调的 [1 , 9, 9,…...
语言与科技创新(大语言模型对科技创新的影响)
1.语言因素对科技创新的影响 科技创新中的语言因素至关重要,具体体现在以下几个方面: 科技文献交流: 英语作为全球科学研究的通用语言,极大地推动了科技成果的国际传播与合作。在国际上,科学家们在发表论文、报告研究…...
【C语言】简单贪吃蛇实现保姆级教学!!!
关注小庄 顿顿解馋૮(˶ᵔ ᵕ ᵔ˶)ა 新年快乐呀小伙伴 引言: 小伙伴们应该都有一个做游戏的梦吧?今天让小庄来用C语言简单实现一下我们的童年邪典贪吃蛇,顺便巩固我们的C语言知识,请安心食用~ 文章目录 贪吃蛇效果一.游戏前工作…...
rtt设备io框架面向对象学习-uart设备
目录 1.uart设备基类2.uart设备基类的子类3.初始化/构造流程3.1设备驱动层3.2 设备驱动框架层3.3 设备io管理层 4.总结5.使用 1.uart设备基类 此层处于设备驱动框架层。也是抽象类。 在/ components / drivers / include / drivers 下的serial.h定义了如下uart设备基类 struc…...
Innodb下修改事务工作流程(buffer pool、redo log、undolog)
1、在Buffer Pool中读取数据:当InnoDB需要更新一条记录时,首先会在Buffer Pool中查找该记录是否在内存中。如果没有在内存中,则从磁盘读取该页到Buffer Pool中。 2、记录UndoLog:在修改操作前,InnoDB会在Undo Log中记…...
redis为什么使用跳跃表而不是树
Redis中支持五种数据类型中有序集合Sorted Set的底层数据结构使用的跳跃表,为何不使用其他的如平衡二叉树、b树等数据结构呢? 1,redis的设计目标、性能需求: redis是高性能的非关系型(NoSQL)内存键值数据…...
【matalab】基于Octave的信号处理与滤波分析案例
一、基于Octave的信号处理与滤波分析案例 GNU Octave是一款开源软件,类似于MATLAB,广泛用于数值计算和信号处理。 一个简单的信号处理与滤波分析案例,说明如何在Octave中生成一个有噪声的信号,并设计一个滤波器来去除噪声。 首…...
浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)
✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义(Task Definition&…...
【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型
摘要 拍照搜题系统采用“三层管道(多模态 OCR → 语义检索 → 答案渲染)、两级检索(倒排 BM25 向量 HNSW)并以大语言模型兜底”的整体框架: 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后,分别用…...
调用支付宝接口响应40004 SYSTEM_ERROR问题排查
在对接支付宝API的时候,遇到了一些问题,记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...
中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试
作者:Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位:中南大学地球科学与信息物理学院论文标题:BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接:https://arxiv.…...
NFT模式:数字资产确权与链游经济系统构建
NFT模式:数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新:构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议:基于LayerZero协议实现以太坊、Solana等公链资产互通,通过零知…...
汇编常见指令
汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX(不访问内存)XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...
网络编程(UDP编程)
思维导图 UDP基础编程(单播) 1.流程图 服务器:短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...
.Net Framework 4/C# 关键字(非常用,持续更新...)
一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...
优选算法第十二讲:队列 + 宽搜 优先级队列
优选算法第十二讲:队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...
OPENCV形态学基础之二腐蚀
一.腐蚀的原理 (图1) 数学表达式:dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一,腐蚀跟膨胀属于反向操作,膨胀是把图像图像变大,而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...
