2.python之函数

发布时间:2026/7/10 11:01:23

2.python之函数
函数参数传递的是内存地址【引用】。1.函数的定义函数传参方式分为两种位置形式传参 关键字传参。其中前者打包为元组后者打包为字典。潜规则定义动态参数时*args、**kwargs#定义一个函数 def 函数名(): def test(): print(test) #调用函数 test() # py中参数没有修饰符。def 函数名(形参1形参2): def func_with_param(data): print(data) func_with_param(12) def func_with_params(p1,p2,p3): print(p1,p2,p3) func_with_params(p1 12,p3 13,p2 14) def func_with_params_default(p1,p2 23,p3 89): print(p1,p2,p3) func_with_params_default(12) print() #形参可变参数*。实参统一会被打包为元组 def func_with_params_tuple(*p): print(p) if len(p) 1: print(p[0]) if len(p) 2: print(p[0]) print(p[1]) #可以通过位置参数的形式传入n个参数 func_with_params_tuple(12) func_with_params_tuple(12,你好) #双星号自动打包为字典格式 def func_with_params_dict(**p): print(p.get(name)) print(p.get(age)) #实参必须用关键词的形式传参 func_with_params_dict(name 张三,age 12) #定义顺序单星号必须位于双星号之前。 #实参位置参数在前关键字传参在后。 def func_with_params_mix(*p1,**p2): print(p1[0]) print(p2.get(username)) func_with_params_mix(12,username 卢俊义)同一函数同时被调用多次每次调用都存在属于自己的调用栈彼此之间是独立的。2.函数的返回值#返回值可以是任意类型没有返回值默认返回None def func_with_return(): return 1212121 rtn func_with_return() print(rtn) def func_with_none(): print(none) #返回结果None print(func_with_none()) def func_with_r(): print( none ) return #返回结果None print(func_with_r()) def a() - 基本数据类型: #关键字 return 可以省略函数也可以显式缺失返回值此时返回默认值None return 基本数据类型3.可变 or 不可变类型def func(a1): #字符串是不可变类型重新分配内存 return a1.upper() v2 fjkwmqkjf print(func(v2)) #大写内容 print(v2) #原内容不变 def func2(a1): a1.append(100) l1 [1,2,434] func2(l1) print(l1) #[1, 2, 434, 100]注意入参是可变 or 不可变类型。4.作用域作用域一块内存区域。区域内的数据是可以共享的。py中执行函数就会为该函数创建一个作用域。全局作用域全部作用域共享。5.Global关键字global是用在函数中用于表示此变量不是新创建的数据而是全局变量中的那个数据地址指向形同。USER_TYPE blog def func3(): USER_TYPE edu print(USER_TYPE) print(USER_TYPE) #edu func3() #edu print(USER_TYPE) #edu print() def func4(): global USER_TYPE #生命该局部作用域内变量USER_TYPE使用全局变量 USER_TYPE edu print(USER_TYPE) print(USER_TYPE) #blog func4() #edu print(USER_TYPE) #edu6.函数名本质就是变量名def func(): print(123) print(func) # 函数名 function func at 0x104c29310 v1 func #变量v1指向函数名 v2 func() # v2变量是指函数的执行结果 data_list [func,func()] data_list[0] # 等价于v1 data_list[0]() # 运行函数func data_list[1] # 函数执行的返回结果备注函数名同样可以作为字典类型的value。7.lambda表达式【匿名函数】条件特定情况下使得代码更加简洁一行代码实现定义简单函数。f lambda : 12378788 print(f()) #12378788 f1 lambda a1,a2:a1 a2 print(f1(100,200)) #300 f2 lambda data_str : data_str.upper() print(f2(saska)) #返回大写 f3 lambda data_list:data_list[1] print(f3([2,4342])) # 输出列表下标为1的元素8.内置函数abs、pow【次方】、sum、divmod取余、all、any、ord、chr。v1,v2 divmod(92,10) print(v1,v2) data [1,3,-1] # 是否所有元素转换成布尔值均为true print(all(data)) # true 是否所有元素转换成布尔值均为true print(all([0,9])) # false # 存在元素为true则返回true print(any([1,-1,90])) # true print(any([0,,[],{}])) #false #unicode编解码~ 将文字和二进制坐上对应 print(ord(A)) # 返回字符对应的十进制数 print(chr(65)) #基于十进制数返回对应的字符int、str、bool、list、dict、set、tuple、float、bytes将目标value转化为对应类型的值。callable是否可执行。def func(): print(1234) date_list [12,34,func] for item in date_list: if callable(item): item()enumerate循环过程中自动提供自增的一列。goods [飞机,破鸡排,AK47] for idx,item in enumerate(goods,1): msg {} {}.format(idx,item) print(msg)排序data_l [23,45,12,4,1] #对原数组进行排序 data_l.sort() print(data_l) data_l1 [23,45,12,4,1] #排序后生成新列表原列表元素顺序不变区别于sort()函数 new_l sorted(data_l1) print(new_l,data_l1)9.推导式简便语法一行代码实现生成列表、字典等多个元素。9.1.列表推导式#生成1-100的列表 data_list [ i for i in range(100) ] #生成元素均为100的列表 data_list1 [ 100 for i in range(10) ] data_list2 [ 100 i for i in range(10) ] data_list3 [100 i for i in range(10) if 10 i 30] data_list4 [100,内控,3,哦好,(2,4),(4,6),[89,34,1,5,90]] print([item for item in data_list4 if type(item) int]) # [100,3] print([item for item in data_list4 if type(item) list]) # [[89,34,1,5,90]] print([item for item in data_list4 if type(item) tuple]) # [(2, 4), (4, 6)]9.2.字典推导式data { 键:值 for i in range(10)}print({i:123 for i in range(10)}) print({i:(i,i100) for i in range(10) if i 5})

相关新闻

基于MODE和PUMA的DOA 估计研究(Matlab代码实现)

基于MODE和PUMA的DOA 估计研究(Matlab代码实现)

2026/7/9 12:07:49

👨‍🎓个人主页 💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰&a…

104、C2PSA 的特征分离比例消融:split_factor=0.5/0.25/0.75 的精度与速度变化

104、C2PSA 的特征分离比例消融:split_factor=0.5/0.25/0.75 的精度与速度变化

2026/7/9 11:08:25

104、C2PSA 的特征分离比例消融:split_factor=0.5/0.25/0.75 的精度与速度变化 上周帮一个做工业缺陷检测的团队调模型,对方在YOLOv11的C2PSA模块里卡了三天——他们发现把split_factor从默认的0.5改成0.25后,mAP掉了将近2个点,但推理速度反而没怎么提升。这让我想起自己去…

Docker部署Papra极简文件归档平台

Docker部署Papra极简文件归档平台

2026/7/9 17:38:53

【Docker部署Papra极简文件归档平台一、Papra介绍1.1 Papra简介1.2 主要特点二、本次实践规划2.1 本地环境规划2.2 本次实践介绍三、本地环境检查3.1 检查Docker服务状态3.2 检查Docker版本3.3 检查docker compose 版本四、拉取Papra镜像五、部署Papra服务5.1 创建部署目录5.2 …

Claude Code生成代码的“可信度衰减曲线”首次公开:第3次迭代后漏洞率激增217%,你还在盲目Accept吗?

Claude Code生成代码的“可信度衰减曲线”首次公开:第3次迭代后漏洞率激增217%,你还在盲目Accept吗?

2026/7/10 11:01:16

更多请点击: https://codechina.net 第一章:Claude Code生成代码的“可信度衰减曲线”现象解析 当Claude Code连续生成多轮代码片段时,其输出质量并非恒定,而是呈现显著的“可信度衰减曲线”——即随着上下文轮次增加、修改迭代深…

PyTorch 2.x 环境配置:3步解决 NameError 与 CUDA 版本冲突

PyTorch 2.x 环境配置:3步解决 NameError 与 CUDA 版本冲突

2026/7/10 11:01:16

PyTorch 2.x 环境配置:3步解决 NameError 与 CUDA 版本冲突当你在终端输入import torch却遭遇NameError: name torch is not defined时,这往往不是简单的导入问题,而是环境配置的深层隐患在作祟。本文将带你穿透表象,直击PyTorch环…

Copilot Excel数据分析能力断层测试(附权威测评矩阵):你处于L1还是L5?立即自测

Copilot Excel数据分析能力断层测试(附权威测评矩阵):你处于L1还是L5?立即自测

2026/7/10 11:01:16

更多请点击: https://intelliparadigm.com 第一章:Copilot Excel数据分析能力断层测试(附权威测评矩阵):你处于L1还是L5?立即自测 Copilot for Excel 是微软将大模型深度嵌入电子表格的里程碑式实践&…

AI搜索双雄PK实录(2024Q2最新基准测试):从RAG延迟到 citation可信度,一文看透底层差异

AI搜索双雄PK实录(2024Q2最新基准测试):从RAG延迟到 citation可信度,一文看透底层差异

2026/7/10 11:01:16

更多请点击: https://codechina.net 第一章:AI搜索双雄PK实录(2024Q2最新基准测试):从RAG延迟到 citation可信度,一文看透底层差异 测试环境与数据集统一性保障 所有实验均在相同硬件配置下运行&#xff…

Unity机械臂抓取进阶:从OnTriggerEnter到预检查与姿态调整

Unity机械臂抓取进阶:从OnTriggerEnter到预检查与姿态调整

2026/7/10 11:01:15

1. 项目概述 最近在做一个Unity的机械臂仿真项目,核心需求是实现一个能够自动识别、接近并抓取场景中任意物体的六轴机械臂。听起来像是机器人学里的经典问题,对吧?但真做起来,从基础的碰撞检测到最终实现稳定抓取,每一…

射频信号源品牌有哪些?如何在品牌、性能与成本间寻找平衡

射频信号源品牌有哪些?如何在品牌、性能与成本间寻找平衡

2026/7/10 10:51:15

当研发与测试工程师面对“射频信号源品牌有哪些?性能和质量可靠吗?”这一问题时,往往需要在多重因素间权衡。市场品牌众多,从国际巨头到各具特色的专业厂商,技术参数纷繁复杂,要判断其真实表现与标称值是否…

解锁AMD Ryzen处理器深层性能:SMU Debug Tool完全指南

解锁AMD Ryzen处理器深层性能:SMU Debug Tool完全指南

2026/7/9 19:40:56

解锁AMD Ryzen处理器深层性能:SMU Debug Tool完全指南 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https://gi…

6个月转型AI工程师:实战路径与核心技能

6个月转型AI工程师:实战路径与核心技能

2026/7/9 18:28:30

1. 项目概述:6个月转型AI工程师的可行性路径在2023年大模型技术爆发的背景下,AI工程师岗位需求同比增长217%(LinkedIn数据)。不同于传统算法工程师需要3-5年培养周期,现代AI工程师更侧重工程化落地能力。我在硅谷科技公…

YOLOv5模型剪枝与量化实战:边缘设备部署优化

YOLOv5模型剪枝与量化实战:边缘设备部署优化

2026/7/10 6:57:56

1. 项目背景与核心价值在计算机视觉领域,YOLOv5因其出色的实时检测性能成为工业界宠儿。但当我们尝试将其部署到边缘设备(如树莓派、Jetson Nano或手机终端)时,立刻会遇到两个致命问题:模型体积庞大(原始YO…

终极原神FPS解锁器完整指南:轻松突破60帧限制

终极原神FPS解锁器完整指南:轻松突破60帧限制

2026/7/10 0:00:42

终极原神FPS解锁器完整指南:轻松突破60帧限制 【免费下载链接】genshin-fps-unlock unlocks the 60 fps cap 项目地址: https://gitcode.com/gh_mirrors/ge/genshin-fps-unlock 原神FPS解锁器是一款专为《原神》玩家设计的开源工具,通过先进的Wri…

YesPlayMusic:如何用高颜值播放器重塑你的网易云音乐体验?[特殊字符]

YesPlayMusic:如何用高颜值播放器重塑你的网易云音乐体验?[特殊字符]

2026/7/10 0:00:42

YesPlayMusic:如何用高颜值播放器重塑你的网易云音乐体验?🎵 【免费下载链接】YesPlayMusic 高颜值的第三方网易云播放器,支持 Windows / macOS / Linux :electron: 项目地址: https://gitcode.com/gh_mirrors/ye/YesPlayMusic…

从零实现红黑树:手写C++的set与map容器

从零实现红黑树:手写C++的set与map容器

2026/7/10 0:00:42

1. 项目概述:从STL容器到自研轮子在C的日常开发中,std::set和std::map是我们再熟悉不过的伙伴了。它们一个负责管理不重复的集合,一个负责维护键值对映射,底层都依赖一颗高效的红黑树来保证数据的有序性和操作的性能。但你是否曾想…