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/10/18 22:50:49 阅读更多 →
Java学习第五天

Java学习第五天

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

2026/10/18 23:43:07 阅读更多 →
端侧推理:在设备本地运行轻量级AI模型(219)

端侧推理:在设备本地运行轻量级AI模型(219)

在鸿蒙(HarmonyOS)生态中,端侧推理是实现“原生智能”的核心基石。它允许将训练好的深度学习模型轻量化处理后,直接部署在手机、平板、穿戴等鸿蒙终端设备本地。所有数据预处理、模型推理及结果输出均在端侧完成,无需依…

2026/10/17 7:41:39 阅读更多 →

最新新闻

【AI】codex 使用教程:从 AGENTS.md 到 skills 的完整配置指南

【AI】codex 使用教程:从 AGENTS.md 到 skills 的完整配置指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 0:29:02 阅读更多 →
DeepThink V1.1.0 开源发布:用 TaoToken 统一 Key 打造个人 AI 操作系统,全自主托管跑通超复杂长程任务

DeepThink V1.1.0 开源发布:用 TaoToken 统一 Key 打造个人 AI 操作系统,全自主托管跑通超复杂长程任务

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 0:28:02 阅读更多 →
优秀的大模型API网关系统Veloera:Docker部署与TaoToken统一Key接入实践

优秀的大模型API网关系统Veloera:Docker部署与TaoToken统一Key接入实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 0:28:02 阅读更多 →
Java批量重命名命令行工具:正则匹配与安全校验实战

Java批量重命名命令行工具:正则匹配与安全校验实战

简介:针对Java文件批量重命名的源码包,面向日常开发中需要整理大量文件的Java程序员,提供一套简单直接的解决方案;整个资源为一个压缩包,体积仅1KB,内含1个Java源文件,代码结构紧凑,…

2026/10/19 0:28:02 阅读更多 →
Java 重造 Agent 框架:从 ReAct 到工具调用的工程实践

Java 重造 Agent 框架:从 ReAct 到工具调用的工程实践

1. 为什么我要用 Java 重造一个 Agent 框架市面上讲 AI Agent 的文章,十篇里有八篇是 Python 写的,剩下两篇是 TypeScript。Java 程序员想找个能直接读源码、能塞进现有 Spring 项目里的 Agent 框架,翻遍 GitHub 也就那么几个半成品。我在一个…

2026/10/19 0:28:02 阅读更多 →
开源AI编程助手Continue的VsCode插件:把settings.json改到TaoToken

开源AI编程助手Continue的VsCode插件:把settings.json改到TaoToken

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 0:28:02 阅读更多 →

日新闻

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

简介:本资源为电源技术方向的学术研究文档,聚焦介质阻挡放电型臭氧发生器电源的频率跟踪型PWM控制策略,面向电力电子、高压电源及臭氧应用领域的科研人员与工程技术人员。针对负载呈容性、等效电容随外加电压升高而增大、谐振频率随之漂移的难…

2026/10/19 0:00:47 阅读更多 →
Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 0:00:47 阅读更多 →
HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

【免费下载链接】HundredCV-Chat 项目地址: https://ai.gitcode.com/hf_mirrors/Jax-dan/HundredCV-Chat 点击查看 免费下载 HundredCV-Chat 是一个由 100 位青年简历数据开发而来的中文多轮对话数据集,共包含 24,750 组日常闲聊对话和 4,871 个话题标签…

2026/10/19 0:00:47 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 0:55:02 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 12:16:16 阅读更多 →