Pyhon 之 functools

python 基础知识100问 当使用。 阅读详情

Pyhon 之 functools

functools模块

reduce方法

  • reduce方法,顾名思义就是减少
  • reduce(function,sequence[,initial])->value
  • 可迭代对象不能为空;初始值没有提供就在可迭代对象中取一个元素
from functools import reduce
nums = [6,9,4,2,4,10,5,9,6,9]
print(nums)
print(sum(nums))
print(reduce(lambda val,x: val + x,nums))

partial方法

  • 偏函数,把函数部分的参数固定下来,相当于为部分的参数添加了一个固定的默认值,形成一个新的函数并返回

  • 从partial生成的新函数,是对原函数的封装

  • partial方法举例

import functools
def add(x,y)->int:
    return x + y

newadd = functools.partial(add,y=5)

print(newadd(7))
print(newadd(7,y=6))
print(newadd(y=10,x=5))

import inspect
print(inspect.signature(newadd))
12
13
15
(x, *, y=5) -> int
partial函数本质
def partial(func,*args,**kwargs):
    def newfunc(*fargs,**fkwargs):
        newkwargs = kwargs.copy()
        newkwargs.update(fkwargs)
        return func(*(args+fargs),**newkwargs)
    newfunc.func = func
    newfunc.args = args
    newfunc.kwargs = kwargs
    return newfunc

def add(x,y):
    return print(x + y)

foo = partial(add,4)
foo(5)

@fooctools.lru_cache(maxsize = 128 , typed = False)

  • Least-recently-used装饰器。lru,最近最少使用。cache缓存
  • 如果maxsize设置为None,则禁用LRU功能,并且缓存可以无限制增长。当maxsize是二的幂时,LRU功能执行得最好
  • 如果typed设置为True,则不同类型的函数参数将单独缓存。例如,f(3)和f(3.0)将被视为具有不同结果的不同调用
  • 举例
import functools
import time
@functools.lru_cache()
def add(x,y,z=3):
    time.sleep(z)
    return x + y

print(add(4,5))
print(add(4.0,5))
add(4,6)
add(4,6,3)
add(6,4)
add(4,y=6)
add(x=4,y=6)
add(y=6,x=4)

lru_cache装饰器

  • 通过一个字典缓存被装饰函数的调用和返回值
  • key是什么?看看下面这段代码
def _make_key(args,kwds,kwd_mark = (object(),)):
	key = args
	if kwds:
		key += kwd_mark
		for item in kwds.items():
			key += item
	elif len(key) == 1 :
		return key[0]
	reutrn key
functools._make_key((4,6){'z':3},False)
functools._make_key((4,6,3),{},False)
functools._make_key(tuple(),{'z':3,'x':4,'y':6},False)
functools._make_key((),{'z':3,'x':4,'y':6},True)

  • lru_cache装饰器
    • 斐波那契数列递归方法的改造
import functools

@functools.lru_cache()
def fib(n):
    return 1 if n<3 else fib(n-1) + fib(n-2)
print([fib(i+1) for i in range(35)])

lru_cache 装饰器应用
  • 适用前提
    • 同样的函数参数一定得到同样的结果
    • 函数执行时间很长,且要多次执行
  • 本质是函数调用的参数==》返回值
  • 缺点
    • 不支持缓存过期,key无法过期、失效
    • 不支持清除操作
    • 不支持分布式,是一个单机的缓存
  • 适用场景,单机上需要空间换时间的地方,可以用缓存来将计算变成快速的查询
YOLO26算法皮革表面缺陷检测+训练好的模型+124张数据集+pyqt可视化界面.zip 附训练好的 YOLO 权重与 PyQt 可视化检测界面,页面底部含可视化效果预览,毕设/课设开箱即用。 【数据集概况】 · 检测类别(中文):[颜色(color), 切(cut), 折叠(fold), 胶水(glue), 好的(good), 戳(poke)] 【训练曲线与评估图】 【模型训练配置】 参数 | 值 模型 | yolo26n 训练轮数 | 100 epochs 输入尺寸 | 640x640 批次大小 | 24 优化器 | auto 初始学习率 | 0.01 训练设备 【关键指标汇总】 训练了 68 个 epoch,最终轮指标: 指标 | 数值 mAP50 | **0.7582** mAP50-95 | 0.4306 Precision | 0.6226 Recall | 0.6520 train/box_loss | 0.8731 train/cls_loss | 2.3543 val/box_loss | 1.3709 val/cls_loss | 3.9767 【训练过程分析】 从一开始的配置就定下了基调,训练配置包括了 yolo26n 模型、100 个 epoch,学习率初始设为 0.01,输入尺寸定为 640x640,批次大小为 24。这组配置在开始阶段表现得不错,模型刚开始训练时的 loss 降低得很快,这表明模型能够迅速从数据中吸收信息。但到了中后期,loss 曲线变得愈发平缓,从第 50 个 epoch 开始,即使我增加了学习率衰减的频率,仍然感到曲线在挣扎,像是陷入了平台期。这期间模型的收敛节奏明显减缓,似乎有些“停滞不前”的迹象。到了最后,模型确实收敛了,但在第 68 个 epoch 时 mAP50 获得了 0.7582 的值,这是一个不错的成绩,但与理想值相比仍有提升空间。... 使用场景:毕业设计、课程设计、深度学习入门、工业场景落地验证。 立即下载

相关推荐

视频编码压缩11111

视频编码压缩11111

【学习】pyhon中的functools.partial 函数

Python 标准库中的 functools.partial 函数。它的作用是创建一个新的函数,该函数是将。上述代码相当于,默认将。的第一个值设置为5.

qq_46110320的博客 405

两相交错并联Boost电路仿真模型(Simulink仿真实现)

内容概要:本文详细介绍了基于Simulink平台构建的两相交错并联Boost电路的仿真模型,系统阐述了该拓扑结构在提升系统效率、降低输出电流纹波以及改善动态响应特性方面的技术优势。文中涵盖了主电路架构设计、双闭环控制策略(电压环与电流环)的实现原理、关键参数(如电感、电容、开关频率)的选取依据,并通过仿真结果验证了控制方案的有效性与稳定性。该模型突出展示了多相交错技术在功率变换器中的应用价值,有助于深入理解现代电力电子系统的设计思路与优化方法,适用于新能源发电、储能系统及高效率DC-DC变换器的研发场景。; 适合人群:具备电力电子技术基础理论知识和Simulink仿真操作经验的电气工程、自动化、能源动力等相关专业的本科高年级学生、研究生,以及从事电源变换器设计与开发的工程技术人员。; 使用场景及目标:① 掌握两相交错并联Boost电路的工作机理及其在减小输入/输出电流纹波中的作用;② 学习并实践双闭环反馈控制策略的设计与调试方法;③ 利用仿真模型开展控制器参数优化,提升系统的稳态精度与抗扰动能力,为后续硬件原型开发提供理论支撑与设计参考。; 阅读建议:建议读者结合仿真模型逐步操作,重点关注交错控制时序、占空比分配、电感电流交错现象及环路补偿设计,对照理论分析进行波形观测与参数调整,深化对多相并联拓扑动态特性的理解,并将其迁移应用于实际工程问题中。

pyhon偏函数的使用

当一个函数有很多参数时,调用者就需要提供多个参数。如果减少参数个数,就可以简化调用者的负担。 int()函数可以把字符串转换为整数,当仅传入字符串时,int()函数默认按十进制转换: &gt;&gt;&gt; int('12345') 12345 但int()函数还提供额外的base参数,默认值为10。如果传入base参数,就可以做N进制的转换: &gt;&gt;&gt; ...

珂鸣玉的博客 177

RLC电阻电容电感基础知识——电感篇

电感 等效电路 电感线圈由铜导线绕制,等效电路如图所示。 寄生电阻RS,包括了绕线电阻、引脚串联电阻以及磁芯损耗电阻三部分组成,其中绕线电阻与线径、长度、铜线电阻率有关;引脚电阻与引线长短、粗细有关;磁芯损耗电阻与磁芯材料特性有关,显然磁芯损耗电阻还与工作频率有关.寄生电容C主要是绕线圈与圈之间的杂散电容(为PF级),与绕线工艺有关。 等效导纳 显然: (1)当角频率ω(频率f)较小时,呈电感性. (2)当角频率ω等于ω0时,导纳Y虚部为0,呈现电阻性,即发生共振。令导纳Y虚部为0,即可求出共振角频率ω

azj2019的博客 1万+

SAP增强实施-第四代显式和隐式增强技术介绍

概念介绍 SAP第四代增强- Enhancement-Point,分为2种显式增强和隐式增强,显式增强就是手动加入到程序中的Enhancement options,隐式增强就是系统内置的Enhancement options。 第四代增强其实是第三代上的加强,都属于面向对象语言的接口技术的应用,但第四代增强使SAP增强实施更具灵活性,四代增强可以直接在源代码里面写增强了代码了,输入参数也不像 二代...

weixin_40672823的博客 7954

控制台模块python_Python标准模块--functools

1 模块简介functools,用于高阶函数:指那些作用于函数或者返回其它函数的函数,通常只要是可以被当做函数调用的对象就是这个模块的目标。在Python 2.7 中具备如下方法,cmp_to_key,将一个比较函数转换关键字函数;partial,针对函数起作用,并且是部分的;reduce,与python内置的reduce函数功能一样;total_ordering,在类装饰器中按照缺失顺序,填充方...

weixin_39640904的博客 129

从零到一:银河麒麟OS下C#跨平台开发的避坑指南

本文详细介绍了在银河麒麟OS下进行C#跨平台开发的完整流程,从开发环境搭建到避坑指南。针对国产操作系统特性,提供了.NET Core安装、开发工具链配置、桌面应用开发及部署优化的实战经验,特别关注ARM架构适配和性能调优,帮助开发者高效应对国产化开发挑战。

weixin_29221753的博客 863

python的reduce怎么用

函数将一个数据集合(链表,元组等)中的所有数据进行下列操作:用传给 reduce 中的函数 function(有两个参数)先对集合中的第 1、2 个元素进行操作,得到的结果再与第三个数据用 function 函数运算,最后得到一个结果。>>> reduce(lambda x, y: x+y, [1,2,3,4,5]) # 使用 lambda 匿名函数。>>> reduce(add, [1,2,3,4,5]) # 计算列表和:1+2+3+4+5。function -- 函数,有两个参数。

hakesashou的博客 667

Open3D 基于法线的双边滤波

基于法线的双边滤波是一种用于点云平滑的技术,它结合了点与其邻域点之间的几何距离和法线方向的相似性,从而在去除噪声的同时保留几何特征。这种滤波方法广泛应用于点云处理领域,尤其是在需要保留表面细节和边缘的场景中。

纵马踏花向自由 2500

[密码学实战]密评考试训练系统v1.0程序及密评参考题库(获取路径在文末)(二十四)

本系统将密码学理论与软件工程实践相结合,为密评备考提供了高效解决方案。随着《密码法》的深入实施,掌握密评知识将成为信息安全从业者的核心竞争力。立即开始您的密码安全专家之旅!(注:实际应用请以最新发布版本为准)

曼岛_的博客 798

Java,Pyhon,Scala比较(一)map,reduce

使用map,reduce函数,将字符串数组[‘1’,’2’,’3’,’4’,’5’,’6’,’7’,’8’,’9’]转化为数字123456789. Java import java.util.List; import java.util.Arrays; import jav...

weixin_34290390的博客 94

【YOLO】Mask Proto分支理解

Mask Proto分支通过解耦全局原型与实例参数,在保持YOLO实时性的同时实现精准分割。其技术核心在于利用多尺度特征生成可组合的原型,结合动态系数适应不同目标形态。未来可进一步融合Transformer的注意力机制,增强对复杂场景的建模能力。

浩瀚之水的专栏 476

Python3中一些高阶函数map、reduce、filter详解及示例

在编程语言中,高阶函数指的是接受函数作为输入或输出的函数。 map概述 python中的map()函数是一个内置的高阶函数,一般用法是map(function, iterable)。需要传入一个函数,这个函数可以是内置的,也可以是自己定义,也可以是匿名函数即lambda。第二个参数是一个可迭代对象,如列表、字典字符串等。map函数返回的是一个map对象,也是一个可迭代对象,可以利用for循环迭...

若数的博客 1630

《唤醒你的AI同事:WorkBuddy从零上手》000:介绍及目录

《唤醒你的AI同事:WorkBuddy从零上手》全书导览与总目录:000–043 共 44 篇,覆盖从环境搭建、对话基础到资料库、行业助手与多模态生成的入门实战。含完整篇目速查与编号直达,建议关注收藏。

LuckyHanMo的博客 600

ADRC自抗扰算法优化(PLC梯形图篇)

ADRC自抗扰算法PLC梯形图完整源代码请参看下面博客文章:ADRC自抗扰控制算法(含梯形图完整源代码和算法公式)_adrc算法_RXXW_Dor的博客-优快云博客PLC的自抗扰控制(ADRC)算法_RXXW_Dor的博客-优快云博客_adrc算法1、自抗扰控制算法,网上很多文章有所讲解,大家也可以关注韩京清教授的论文和书籍,这里就不赘述了,下面给出梯形图+SCL代码。

RXXW_Dor的博客 2283

python学习笔记——廖雪峰(21、map返回新的迭代器(惰性的)/reduce)

map map()函数接收两个参数,一个是函数,一个是Iterable(可迭代对象),map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator(迭代器)返回。 比如我们有一个函数f(x)=x2,要把这个函数作用在一个list [1, 2, 3, 4, 5, 6, 7, 8, 9]上,就可以用map()实现如下: f(x) = x * x ...

by壮壮的小仙女呀! 974

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

python 提升速度 读大文件_提升Python执行速度,1行代码就够了!

专注Python、AI、大数据 @七步编程 缓存是一项从底层到高层都广泛应用的技术,无论是前端还是后端,有一定开发经验的程序员对缓存应该都不陌生。缓存是指可以进行高速数据交换的存储器,它先于内存与CPU交换数据,因此速率很快。在Python开发过程中,有一些函数的结果可能会被反复调用,如果这个函数耗时较少还无伤大雅。但是,如果一个函数耗时10分钟,或者频繁的发送rest请求,那么耗时就会呈现非线性...

weixin_31433527的博客 353

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

python自定义排序函数_python3 sorted 如何实现自定义排序标准

在 python2 中,如果想要自定义评价标准的话,可以这么做def cmp(a, b):# 如果逻辑上认为 a < b ,返回 -1# 如果逻辑上认为 a > b , 返回 1# 如果逻辑上认为 a == b, 返回 0passa = [2,3,1,2]a = sorted(a, cmp)但是在 python3 中,cmp 这个参数已经被移除了,那么在 python3 中应该怎么实现...

weixin_40001442的博客 299

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

python--前端开发 10 python常用模块

思考:python中有哪些常见的包?有什么功能? ''' 问题:1234可以组成多少个不重复不相同的三位数? ''' from collections import deque from functools import reduce, partial from itertools import permutations, chain # 排列 ret = permutations("...

一越王超的博客 448

Python 常用的特殊函数

map map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回 def a(x): return x*2 print map(a, [1, 2, 3, 4]) #结果 [2, 4, 6, 8]or lambdaprint map(lambda x: x*2, [1, 2, 3, 4]) #结果 [2, 4, 6, 8]reduce reduce把结果继续和序列的下一

u010066807的博客 1556

python装饰器-测试运行时间

单独写一个函数d1.py from functools import wraps import time def f1(func): @wraps(func) def f2(): begin = time.time() func() end = time.time() print('cost', end - begin) return f2 以下是应用 from d1 import f1 @f1 def f():

qq_39498924的博客 445

JZ32 把数组排成最小的数

描述 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。 讨论组题解: (1)int转为string方式 python可以借助map()来完成int转string,即a=list(map(str,numbers)) (2)排序方式 lambda表达式:定义了一个匿名函数,简化了函数定义的书写形式 https://www.cnblogs.com/my_capt

Han_torch的博客 291

python一些常见问题-Python常见的坑总结

简介在Python中也会有很多陷阱,在网上看到一篇文章,在此处记录以下,菜鸡翻译。问题集合类变量问题下面的代码将会输出什么? 并解释。def extend_list(value, my_list=[]):my_list.append(value)return my_listlist1 = extend_list(10)list2 = extend_list(123, [])list3 = exte...

weixin_37988176的博客 365

python虚拟环境搭建与工程化实战

python虚拟环境、项目依赖、工程化管理深入研究与分析

yanghuashuiyue的专栏 1501

python3 核心笔记

本文主要是针对python3的一些核心要点做一些记录,感兴趣的可以关注和订阅。会持续更新,这个玩意学习一下,可以为数据分析和AI打下一定的基础。

yanghuashuiyue的专栏 619
上一篇: Python参数注解
下一篇: Python-NNN-问
FatTigerx
博客等级 码龄8年 5粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值