Coding养成--Python(19)

展锐双摄帧同步实战:从配置到调试的完整避坑指南 本文深入剖析了在展锐平台上实现双摄帧同步的完整流程与核心技术。详细对比了硬件帧同步与软件帧同步的差异、应用场景及核心挑战,提供了从XML配置、驱动层适配到调试验证的实战指南。重点强调了硬件帧同步必须与固定帧率强绑定这一关键避坑点,并分享了针对景深虚化等场景的同步质量验证方法及长稳测试策略。 阅读详情

#The diary of a Python learner

Date:14.03.2025

目录

#The diary of a Python learner

Focus:

Key:

1.

2.

3.

Practice:

2.

Difficulty?

Addition:



Focus:关于collections内置模块的应用

Key:

函数功能
namedtuple带名称的元组
deque双向列表
defaultdict不存在的key指定返回
ordereddict指定key先入先出
chainmap串联dict
counter统计字符出现次数

1.namedtuple是一个函数,它用来创建一个自定义的tuple对象,并且规定了tuple元素的个数,并可以用属性而不是索引来引用tuple的某个元素。

>>> from collections import namedtuple
>>> Point = namedtuple('Point', ['x', 'y'])
>>> p = Point(1, 2)
>>> p.x
1
>>> p.y
2
2.

deque是为了高效实现插入和删除操作的双向列表,适合用于队列和栈:deque除了实现list的append()和pop()外,还支持appendleft()和popleft(),这样就可以非常高效地往头部添加或删除元素。

>>> from collections import deque
>>> q = deque(['a', 'b', 'c'])
>>> q.append('x')
>>> q.appendleft('y')
>>> q
deque(['y', 'a', 'b', 'c', 'x'])
3.

使用dict时,如果引用的Key不存在,就会抛出KeyError。如果希望key不存在时,返回一个默认值,就可以用defaultdict:

>>> from collections import defaultdict
>>> dd = defaultdict(lambda: 'N/A')
>>> dd['key1'] = 'abc'
>>> dd['key1'] # key1存在
'abc'
>>> dd['key2'] # key2不存在,返回默认值
'N/A'
4.

OrderedDict的Key会按照插入的顺序排列,不是Key本身排序:

>>> od = OrderedDict()
>>> od['z'] = 1
>>> od['y'] = 2
>>> od['x'] = 3
>>> list(od.keys()) # 按照插入的Key的顺序返回
['z', 'y', 'x']

OrderedDict可以实现一个FIFO(先进先出)的dict,当容量超出限制时,先删除最早添加的Key:

from collections import OrderedDict

class LastUpdatedOrderedDict(OrderedDict):

    def __init__(self, capacity):
        super(LastUpdatedOrderedDict, self).__init__()
        self._capacity = capacity

    def __setitem__(self, key, value):
        containsKey = 1 if key in self else 0
        if len(self) - containsKey >= self._capacity:
            last = self.popitem(last=False)
            print('remove:', last)
        if containsKey:
            del self[key]
            print('set:', (key, value))
        else:
            print('add:', (key, value))
        OrderedDict.__setitem__(self, key, value)
5.

ChainMap可以把一组dict串起来并组成一个逻辑上的dict。ChainMap本身也是一个dict,但是查找的时候,会按照顺序在内部的dict依次查找。

可以根据参数设置的顺序确定查找目标参数的顺序

可以用ChainMap实现参数的优先级查找,即先查命令行参数,如果没有传入,再查环境变量,如果没有,就使用默认参数。

# 构造命令行参数:
parser = argparse.ArgumentParser()
parser.add_argument('-u', '--user')
parser.add_argument('-c', '--color')
namespace = parser.parse_args()
command_line_args = { k: v for k, v in vars(namespace).items() if v }

# 组合成ChainMap:
combined = ChainMap(command_line_args, os.environ, defaults)
$ python3 use_chainmap.py 
color=red
user=guest
$ python3 use_chainmap.py -u bob
color=red
user=bob
$ python3 use_chainmap.py -u bob
color=red
user=bob
6.Counter是一个简单的计数器,例如,统计字符出现的个数:

>>> from collections import Counter
>>> c = Counter('programming')
>>> for ch in 'programming':
...     c[ch] = c[ch] + 1
...
>>> c
Counter({'g': 2, 'm': 2, 'r': 2, 'a': 1, 'i': 1, 'o': 1, 'n': 1, 'p': 1})
>>> c.update('hello') # 也可以一次性update
>>> c
Counter({'r': 2, 'o': 2, 'g': 2, 'm': 2, 'l': 2, 'p': 1, 'a': 1, 'i': 1, 'n': 1, 'h': 1, 'e': 1})


Practice:

1.
# -*- coding: utf-8 -*-
import 
2.
# -*- coding: utf-8 -*-
import


Difficulty?


Addition:

参考:简介 - Python教程 - 廖雪峰的官方网站

如何通过单步调试的方法,找到 SAP Gateway 到底把 Fiori 应用发送的 OData 请求,投递到哪一台 ABAP 后台服务器了? 这是一个 Count 请求,得到服务器响应的数据是 204,这个 204 会以数字的形式,显示在 Fiori Launchpad tile 上。那如果当前 Gateway 系统可以连接到多台 ABAP 后台服务器,比如下图所示,可以连接 SAP S/4HANA,ERP 或者 SAP CRM,我怎么知道 SAP UI5 应用上显示的数据,到底来自哪一台 ABAP 后台服务器呢?,就是上图 ABAP 调试器里断点停留的位置,即 SAP Frontend 服务器,通过 RFC 将 OData 请求投递给。 阅读详情

相关推荐

VL53L0X加盖玻片后精度暴跌?手把手教你完成串扰校准(CrossTalk Calibration)

本文详细解析了VL53L0X激光测距传感器加盖玻片后精度下降的原因,并提供了串扰校准(CrossTalk Calibration)的完整解决方案。通过分步指导和实用代码示例,帮助工程师恢复毫米级测距精度,适用于智能门锁、扫地机器人等应用场景。

weixin_33708432的博客 539

Coding养成--Python(18)

从str转换为datetime可以用.strptime('2025.02.21','%Y-%m-%d %H:%M:%S')(1970年以前的时间timestamp为负数),当前时间就是相对于epoch time的秒数,称为timestamp。,最佳方法是将其转换为timestamp再存储,因为timestamp的值与时区完全无关。Key:通过datetime获取时间、转换为timestamp、与str的互转、时区转换。表示的时间需要时区信息才能确定一个特定的时间,否则只能视为本地时间。

RedDevil_7的博客 444

音乐频谱灯的硬件艺术:从STM32到SK9822LED的工程美学

本文探讨了基于STM32微控制器和SK9822 LED的音乐频谱灯硬件设计与实现。通过ADC采集音频信号,利用FFT算法进行频谱分析,并驱动LED阵列呈现动态视觉效果,展现了硬件工程与艺术美学的完美融合。

Pepper的专栏 215

Coding养成--Python(17)

a-zA-Z\_][0-9a-zA-Z\_]*可以匹配由字母或下划线开头,后接任意个由一个数字、字母或者下划线组成的字符串,也就是Python合法的变量;1.\d\s\w分别为数字、空格、字母\数字,‘.’代表可以匹配任意字符,{}可以声明字符长度,\s代表空格,后面加一个+表示至少一个。[0-9a-zA-Z\_]+可以匹配至少由一个数字、字母或者下划线组成的字符串,如'a100','0_Z','Py3000'等等;py也可以匹配'python',但是加上^py$就变成了整行匹配,就只能匹配'py'了。

RedDevil_7的博客 455

【AutoDL + Langchain-Chatchat】从零构建高效本地 RAG 知识库问答系统:实战保姆级教程(含避坑指南)

本文详细阐述如何在AutoDL云平台,如何利用Langchain-Chatchat构建高效的本地RAG知识库问答系统,并深入解析RAG架构。从环境搭建到实战部署,从问题排查到性能优化,提供一份全面实用的指南,助力开发者快速构建智能问答应用。

拾光夕拾的博客 1803

Ubuntu 24.04 下 NoMachine 极速安装与远程桌面配置全攻略

本文详细介绍了在Ubuntu 24.04系统下安装和配置NoMachine远程桌面的完整指南。从系统准备、分步安装到性能调优和常见问题解决,帮助用户快速实现低延迟的远程桌面访问。特别适合开发者和IT管理员在Linux环境下高效部署远程工作环境。

moon9的博客 945

Coding养成--Python

循环变量时应再加一层函数使循环变量不直接被引用,同时用i作为每次循环的指针。若要对外层函数赋值,同时保证不被初始化,提前用nonlocal在内层声明。Addition:同层代码和return以及内层def同样缩进。注意外层函数返回的是内层函数还是使用内层中返回的参数。Focus:返回函数、闭包对于内存的保护。闭包尽量避免循环变量作为外层参数。

RedDevil_7的博客 465

NTFS分区变成RAW别乱修!正确数据恢复与修复方法详解

文件系统是操作系统管理存储数据的核心机制,NTFS作为Windows主流文件系统,一旦分区识别异常,常会显示为RAW格式。分区变RAW通常意味着文件系统入口信息损坏,而非数据物理消失,但若采用错误的修复方式,如直接对RAW分区执行chkdsk /f,可能因系统无法正确识别文件系统结构,导致写入操作落在错误偏移位置,二次破坏本可恢复的数据。正确的处理思路是:先停止一切写入操作,通过扇区级镜像备份保留原始现场,再分析DBR、分区表及$MFT状态,依据诊断结果选择修复或深度扫描恢复。实际排查中,常见问题如DBR记

weixin_31155097的博客 134

Coding养成--Python(9)

Addition:通过has/set/getattr实现对内在属性的判断/设置/获取。type(xxx)==type(yyy)该方法可以判断函数/串/数值。Focus:OOP中关于获取对象信息的方法。

RedDevil_7的博客 427

【BLE系列-第六篇】GATT解析:属性、特征、描述符的逻辑关系

本文系统介绍了BLE协议中的ATT和GATT机制。ATT以"属性"为基本数据单元,包含UUID、Handle、权限和Value四个要素。GATT则在ATT基础上构建了服务、特征和描述符的层次结构:服务(UUID:0x2800/0x2801)通过声明属性标识,特征声明(UUID:0x2803)指向特征值(UUID:0x2Axx或自定义),描述符(UUID:0x2900~0x290F)提供附加信息。GATT复用ATT发现机制,通过定义特定UUID语义实现服务发现和特征管理。这种设计使BLE设

qq_43399763的博客 1929

腾讯云TDSQL MySQL版 - 开发指南兼容性

语言结构 分布式实例支持所有 MySQL 使用的文字格式,包括: String Literals Numeric Literals Date and Time Literals Hexadecimal Literals Bit-Value Literals Boolean Literals NULL Values String Literals String Literals 是一个 bytes 或者 characters 的序列,两端被单引号'或者双引号"包围,TDSQL MySQL版

weixin_43872058的博客 909

Coding养成--Python(20)

解析参数,只需定义好参数类型,就可以获得有效的参数输入,能大大简化获取命令行参数的工作。一般位置参数放在最后,关键字参数要有开头索引。详情参考廖老师的例子,如下。是位置参数,而其他则是类似。这样的“关键字”参数。更神奇的是,如果输入。

RedDevil_7的博客 292

深度学习论文: AnomalyDINO: Boosting Patch-based Few-shot Anomaly Detection with DINOv2

通过将DINOv2模型适应到一次性和少量异常检测中,并专注于工业应用少量异常检测。实验表明,这种方法不仅与现有技术相匹敌,甚至可以在许多设置中超越它们。我们提出的仅视觉方法AnomalyDINO基于补丁相似性,能够实现图像级别的异常预测和像素级别的异常分割。该方法在方法论上很简单,无需训练,因此不需要任何额外的数据进行微调或元学习。

mingo_敏 1903

Coding养成--Python(5)

自建顶层包,但必须有'._init_.py'添加搜索路径:在sys.path中。Focus:模块定义&调用安装。一个.py就是一个模块。

RedDevil_7的博客 403

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Coding养成--Python(16)

Key:通过manager发布服务器进程,将运行进程分布到子服务器上。才能通过网络将任务正确地发送到其他机器上的进程。才能通过网络将任务正确地发送到其他机器上的进程。服务器启动queue,注册到网络然后写入任务。实例,绑定到端口 5000 并设置验证码。对象注册到网络上,并分别给它们命名为。authkey作为保证传输通信的工具。模块提供了一种机制,能将本地的。获得的接口来添加任务,这样。获得的接口来添加任务,这样。对象包装并注册到网络上。获取到可以在网络上访问的。Focus:分布式进程。

RedDevil_7的博客 218

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Coding养成--Python(14)

Key:fork可实现多进程、WIN系统上multiprocessing模块可替代、进程间通信可通过Queue和Pipes实现。fork通过复制一个子进程来实现多线程,子进程返回0,父进程返回子进程的ID分别可通过getppid、getpid得到。针对具体的子进程,如果想要指定输入和输出可以利用communicate功能输入设置,利用popen创建子进程。multiprocessing模块,先设计一个函数准备调用,然后可以通过传入参数,创建一个。Focus:任务/进程/线程。方法启动,这样创建进程比。

RedDevil_7的博客 336

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Coding养成--Python(15)

Addition:注意多个锁由于可以存在多个锁,不同的线程持有不同的锁,并试图获取对方持有的锁时,可能会造成死锁,导致多个线程全部挂起,既不能执行,也无法结束,只能靠操作系统强制终止。Key:Thread中多线程中利用Lock防止全局变量被交替修改、TreadLocal创建可全局读取对应变量字典。当多线程修改全局变量时,为了防止交替修改导致错误,一般使用Lock,每个子线程使用完,再用release释放锁。Thread模块可以创造多个线程,主线程叫Mianthread,子线程可修改命名。

RedDevil_7的博客 290

Coding养成--Python(2)

复习了一下filter函数可以进行对输入的T/F进行判断并筛选。Focus:lambda匿名函数。可以直接在return里用。lambda不需要返回值。

RedDevil_7的博客 450

Coding养成--Python(10)

Key:self.name创建的是实例的属性,直接在class下面写name=xxx定义的是类的某个属性,通过Student.name可以直接调用。Focus:OOP中的实例和类的属性。

RedDevil_7的博客 443

Coding养成--Python(6)

Key:通过Class Stdudent(object) 来创建类;通过_init_(self,xxx,xxx)来绑定类的属性,其中第一个固定为self;可以通过内部设置函数的方式实现从类内部数据封装。Addition:注意后期通过实例添加方法,对于同类其他实例无效。Focus:OOP面向对象编程--Class&instance。

RedDevil_7的博客 429

Coding养成--Python(13)

pickle是python序列化的方式, dump进行序列化。Key:pickle、json格式序列化,对类的实例序列化。Addition:对于_slot_形式的无法直接序列化。json是标准的格式,也是JS的格式。1.对中文进行JSON序列化时,Focus:pyhton序列化。对类进行序列化时,无法直接处理。写一个函数(传入,传出)利用_dict_序列化。load进行反序列化。

RedDevil_7的博客 233

Coding养成--Python(3)

log层return的是wrapper,wrapper层要return并执行func。Focus:装饰器—— decorator,@func |(上)Key:装饰器为了给目标函数增加新功能同时不在内部修改函数。@xx相当于声明xx函数增加功能,并将功能在下一行def。Addition:‘._name_’可生成当前函数的名称。‘time.time()’可生成当前执行时间。将实现另外功能的内容直接放在print里?.time是内置的?

RedDevil_7的博客 481

Coding养成--Python(4)

将关键字‘**kw’定义为‘base=xx’(几进制),但注意如果不写会导致误认为‘*args’传入左边。Focus:偏函数-通过functools.partial函数简化调用函数。其目的是为了简化函数调用的形式,比如通过将参数固定减化调用时的形式。

RedDevil_7的博客 490

Coding养成--Python(8)

Key:子类可以获得父类中所有的方法;如子类有同名方法,则可以直接覆盖父类的方法;子类会继承父类数据类型;若想实现某种功能,只需要保证父类或子类具有某函数,然而另一个非继承独立的类也有该函数的话,效果类似——即动态语言的‘鸭子’特点。Addition:动态语言的鸭子类型特点决定了继承不像静态语言那样是必须的。Focus:OOP中的继承和多态。

RedDevil_7的博客 428

Coding养成--Python(11)

Key:创建IO,然后写入用.write(),用getvalue()读取。Focus:文件读写strIO和BytesIO。

RedDevil_7的博客 232

Coding养成--Python(7)

Key:通过self._name=name使其成为私有变量,避免直接访问;而类似_name_这类变量是特殊变量,外部可以访问。Addition:其实私有变量在内部变成了_student_name,在外部也可以直接访问,但这是有风险的。Focus:OOP中的访问限制方法。字段对外隐藏起来,用。

RedDevil_7的博客 367
上一篇: Coding养成--Python(18)
下一篇: Coding养成--Python(20)
RedDevil_7
博客等级 码龄5年 109粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值