python中的基础函数篇_3
文章目录1.函数参数位置参数(按照位置进行实参和形参的匹配)关键字参数(按照名字进行实参和形参的匹配)默认参数可变长参数解包传参2.深拷贝和浅拷贝3.闭包4.匿名函数5.函数的注释函数中的注释函数参数的注释1.函数参数位置参数(按照位置进行实参和形参的匹配)defprint_info(a,b,c):print(a,b,c)print_info(2,1,3)关键字参数(按照名字进行实参和形参的匹配)defprint_info(name,age):print(name)print(age)print_info(age20,namezhang)默认参数可以简化参数的传递如果没有传递默认值参数那么使用默认值如果传递了那么使用传递的参数defprint_info(name,age18):print(name,age)print_info(zs)可变长参数*参数名 底层是将参数封装为元组 后面可以再跟其他参数其它参数必须通过关键字方式进行传递 **参数名 底层是将参数封装为字典 参数在传递的时候必须以键值对的形式传递 后面不能再跟其他参数defprint_info(name,*args,age):print(name,args,age)print_info(zs,aplle,orange,banana,age20)# 20 前必须要用关键字 age# 输出zs(aplle,orange,banana)20defprint_info(name,**args):print(name,args)print_info(zs,a1,b2,c3)# 底层是字典传值需要是kv形式# 输出zs{a:1,b:2,c:3}解包传参deffunc(a,b,c):print(a,b,c)dict1{a:1,b:2,c:3}func(**dict1)print(**************************)tup1(1,2,3)func(*tup1)# 输出123**************************1232.深拷贝和浅拷贝浅拷贝拷贝父对象不会拷贝对象的内部的子对象。拷贝后只有第一层是独立的# 浅拷贝defchange_list(list1):print(f在函数中修改列表前列表内容是{list1},地址是{id(list1)})# [1, 2, 3, [10, 20, 30]] 0x222list1[3].append(40)print(f在函数中修改列表后列表内容是{list1},地址是{id(list1)})# [1, 2, 3, [10, 20, 30,40]] 0x222list0[1,2,3,[10,20,30]]print(f在函数外list0修改列表前列表内容是{list0},地址是{id(list0)})# [1, 2, 3, [10, 20, 30]] 0x111change_list(list0.copy())print(f在函数外list0修改列表后列表内容是{list0},地址是{id(list0)})# [1, 2, 3, [10, 20, 30,40]] 0x111深拷贝完全拷贝了父对象及其子对象拷贝后所有层都是独立的子对象0x3456需要拷贝新的对象地址为0x5678# 深拷贝importcopydefchange_list(list1):print(f在函数中修改列表前列表内容是{list1},地址是{id(list1)})# [1, 2, 3, [10, 20, 30]] 0x222list1[3].append(40)print(f在函数中修改列表后列表内容是{list1},地址是{id(list1)})# [1, 2, 3, [10, 20, 30,40]] 0x222list0[1,2,3,[10,20,30]]print(f在函数外list0修改列表前列表内容是{list0},地址是{id(list0)})# [1, 2, 3, [10, 20, 30]] 0x111change_list(copy.deepcopy(list0))print(f在函数外list0修改列表后列表内容是{list0},地址是{id(list0)})# [1, 2, 3, [10, 20, 30]] 0x1113.闭包闭包形成条件1、在一个函数体中定义另一个函数2、外层的函数的返回值是内层函数对象3、在内函数中访问了外函数定义的变量在闭包中会延长外层函数中定义的变量的生命周期(相当于外层变量的生命周期和内层函数绑定内函数结束后变量才被销毁)defouter():a10definner():# 1、在一个函数体中定义另一个函数print(a)# 3、在内函数中访问了外函数定义的变量returninner# 2、外层的函数的返回值是内层函数对象# outer() # 返回到是 inner 对象。对象的调用要加 ()outer()()# output104.匿名函数匿名函数要结合 lambda 使用# 计算器的实现defadd(num1,num2):returnnum1num2defsub(num1,num2):returnnum1-num2defmul(num1,num2):returnnum1*num2defdiv(num1,num2):returnnum1/num2defcalculate(num1,num2,op):returnop(num1,num2)# 不使用匿名函数print(calculate(1,2,add))# 这里体现了面向函数编程的思想将函数作为参数进行传递print(calculate(1,2,mul))# 使用匿名函数print(calculate(10,20,lambdaa,b:ab))练习1、给出 student_list [{“name”: “zhang3”, “age”: 36}, {“name”: “li4”, “age”: 14}, {“name”: “wang5”, “age”: 27}] 要求按照年龄倒序排序student_list[{name:zhang3,age:36},{name:li4,age:14},{name:wang5,age:27}]print(sorted(student_list,keylambdae:e[age],reverseTrue))# 传入一个可迭代的集合拿到集合当中每个元素2、list1 [1, 2, 3, 4, 5, 6, 7, 8, 9]给列表中的每一个元素加上前缀 atguigu-list1[1,2,3,4,5,6,7,8,9]print(list(map(lambdae:atguigu-str(e),list1)))# 输出[atguigu-1,atguigu-2,atguigu-3,atguigu-4,atguigu-5,atguigu-6,atguigu-7,atguigu-8,atguigu-9]3、list1 [1, 2, 3, 4, 5, 6, 7, 8, 9]过滤出偶数list1[1,2,3,4,5,6,7,8,9]print(list(filter(lambdae:e%20,list1)))# [2, 4, 6, 8]5.函数的注释函数中的注释函数参数的注释defdog(name:str,age:int)-tuple: 返回狗的信息 return[name,age]# age: int 提示应该传递一个 int 类型的数值但是不做强制性要求可以随便传递其它类型的print(dog(旺财,十一岁))# [旺财, 十一岁] 返回类型也是建议返回一个元组但是硬生生的给了个列表

相关新闻

C#语言特性与.NET开发实战指南

C#语言特性与.NET开发实战指南

1. C#语言特性深度解析C#作为一门现代编程语言,其设计融合了多种编程范式的优点。让我们从类型系统这个基础开始剖析:1.1 类型系统设计哲学C#采用统一的类型系统(CTS),所有类型都继承自System.Object。这种设计带来几个关键特性:值…

2026/7/20 21:36:59阅读更多 →
Java学习第五天

Java学习第五天

1、类的使用(Java的面向对象)1.1面向对象的基础概念面向过程:面向过程指的是每次需要某个功能的时候都需要将功能重新编写一次。----早期的时候,很多程序采用的都是面向过程,这种方式会产生维护困难、需求不容易修改、…

2026/7/20 21:36:59阅读更多 →
AM64x/AM243x安全配置与调试寄存器实战解析

AM64x/AM243x安全配置与调试寄存器实战解析

1. 深入理解AM64x/AM243x的安全配置与调试寄存器在嵌入式系统开发,尤其是基于德州仪器(TI)AM64x/AM243x这类高性能多核异构处理器的项目中,底层硬件的精确控制是项目成败的基石。很多工程师在项目初期,往往把精力集中在…

2026/7/20 21:34:58阅读更多 →
OpenCV-Python实战(12)——一文详解AR增强现实

OpenCV-Python实战(12)——一文详解AR增强现实

OpenCV-Python实战(12)——一文详解AR增强现实 0. 前言 1. 增强现实简介 2. 基于无标记的增强现实 2.1 特征检测 2.2 特征匹配 2.3 利用特征匹配和单应性计算以查找对象 3. 基于标记的增强现实 3.1 创建标记和字典 3.2 检测标记 3.3 相机校准 3.4 相机姿态估计 3.5 增强现实初…

2026/7/21 15:55:40阅读更多 →
国产化落地避坑 · 干货向|Oracle 迁金仓 KES,我把外连接消除排在隐性陷阱第一位

国产化落地避坑 · 干货向|Oracle 迁金仓 KES,我把外连接消除排在隐性陷阱第一位

从 Oracle 迁到金仓 KES 这几年,我攒了一份隐性陷阱清单。所谓隐性,是它们不报错。语法过了,程序跑了,数据也出来了,只是结果悄悄和 Oracle 不一样。这类坑比报错的坑难缠十倍,因为报错会拦住你&#xff0c…

2026/7/21 15:55:40阅读更多 →
OpenCV-Python实战(13)——OpenCV与机器学习的碰撞

OpenCV-Python实战(13)——OpenCV与机器学习的碰撞

OpenCV-Python实战(13)——OpenCV与机器学习的碰撞 0. 前言 1. 机器学习简介 1.1 监督学习 1.2 无监督学习 1.3 半监督学习 2. K均值 (K-Means) 聚类 2.1 K-Means 聚类示例 3. K最近邻 3.1 K最近邻示例 4. 支持向量机 4.1 支持向量机示例 小结 系列链接 0. 前言 机器学习是人…

2026/7/21 15:55:40阅读更多 →
怎样专业配置LOOT:5个高效插件加载优化技巧

怎样专业配置LOOT:5个高效插件加载优化技巧

怎样专业配置LOOT:5个高效插件加载优化技巧 【免费下载链接】loot A modding utility for Starfield and some Elder Scrolls and Fallout games. 项目地址: https://gitcode.com/gh_mirrors/lo/loot LOOT(Load Order Optimization Tool&#xff…

2026/7/21 15:55:40阅读更多 →
OpenCV-Python实战(14)——人脸检测详解(仅需6行代码学会4种人脸检测方法)

OpenCV-Python实战(14)——人脸检测详解(仅需6行代码学会4种人脸检测方法)

OpenCV-Python实战(14)——人脸检测详解(仅需6行代码学会4种人脸检测方法)0. 前言1. 人脸处理简介2. 安装人脸处理相关库2.1 安装 dlib2.2 安装 face_recognition2.3 安装 cvlib3. 人脸检测3.1 使用 OpenCV 进行人脸检测3.1.1 基于…

2026/7/21 15:55:40阅读更多 →
终极Node.js命令行解析工具command-line-args:10分钟快速入门指南

终极Node.js命令行解析工具command-line-args:10分钟快速入门指南

终极Node.js命令行解析工具command-line-args:10分钟快速入门指南 【免费下载链接】command-line-args A mature, feature-complete library to parse command-line options. 项目地址: https://gitcode.com/gh_mirrors/co/command-line-args 你是否厌倦了手…

2026/7/21 15:53:38阅读更多 →
Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/21 0:51:49阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/21 0:51:49阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/21 0:51:49阅读更多 →
Windows+macOS 通用 OpenClaw 部署流程,内置依赖一键启动智能桌面助手

Windows+macOS 通用 OpenClaw 部署流程,内置依赖一键启动智能桌面助手

📌教程适配:OpenClaw v2.7.9 | 兼容 Windows10/11、macOS 双系统 📖前言 当下各类本地 AI 工具层出不穷,多数产品仅能完成文字问答交互,很难直接操控电脑执行实际操作。OpenClaw,业内常称小龙虾 AI&#…

2026/7/21 0:01:46阅读更多 →
Codex 接入后 Bug 反增?复盘从个人演示到团队协作的“流程陷阱”

Codex 接入后 Bug 反增?复盘从个人演示到团队协作的“流程陷阱”

聊《一次Codex项目复盘,问题最后出在流程而不是模型》之前,先说一句实在的:别急着背概念,先看它在真实项目里到底解决什么问题。摘要先把这篇文章的目标说清楚:看完之后,你应该能判断这件事值不值得做&…

2026/7/21 0:01:46阅读更多 →
手把手搓一个五子棋游戏,零代码也能当“游戏开发者”

手把手搓一个五子棋游戏,零代码也能当“游戏开发者”

大家好,还是我。前几期带大家做了心情日记本和可视化大屏,后台有朋友留言:“能不能教点好玩的?我想做游戏,但一行代码都不会。”行,这期就安排。今天的目标:从零做一个五子棋游戏。 带AI对战、三…

2026/7/21 0:03:46阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/20 22:51:39阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/20 18:51:18阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/20 18:51:18阅读更多 →