新手必会的 9 个 Python 技巧!

树莓派上基于ONNXRuntime与Qt的C++模型部署实战指南 本文详细介绍了在树莓派上使用ONNXRuntime与Qt进行C++模型部署的完整流程。从环境配置、依赖安装到交叉编译优化,再到Qt界面集成与ARM架构性能调优,提供了实战指南和常见问题解决方案,帮助开发者高效完成边缘设备上的AI应用部署。 阅读详情

英文原文:https://martinheinz.dev/blog/1
译者:测试

有很多介绍Python中各种很酷的功能(如变量拆包、偏函数、枚举可迭代对象)的文章,但说到Python时,还有很多东西可以谈论,这里我将尝试展示我所知道和使用的一些特性,我还没有在其他地方看到有人提到过它们。我们开始吧。

清理字符串输入

对用户输入进行清理的问题几乎适用于您编写的所有程序。通常情况下,将字符转换为小写或大写就足够了,有时您可以使用Regex来完成这项工作,但对于复杂的情况来说,可能有更好的方法:

在本例中,您可以看到空白字符“\n”和“\t”已被单个空格替换,而“\r”已被完全删除。这是一个简单的例子,但是我们可以更进一步,使用unicodedata包和它的combining()函数来生成并进行映射,从而生成更大的重新映射表,我们可以使用它来删除字符串中的所有重音。

对迭代器进行切片

如果您尝试对一个迭代器进行切片,您会得到一个TypeError,这说明生成器对象是不可下标访问的,但有一个简单的解决方案可以解决这个问题:


使用itertools.islice我们可以创建一个islice对象,它是一个会生成所需项的迭代器。需要注意的是,这将消耗slice开始之前的所有生成器项,以及islice对象中的所有项。

跳过可迭代对象的开始部分

有时您必须处理那些以您不想要的可变数量的行(如注释)开始的文件。itertools再次为这个问题提供了简单的解决方案:

这代码段只生成初始注释部分之后的行。如果我们只想在可迭代对象的开头丢弃一些项目(本例中是一些行),并且不知道有多少个项目,那么这种方法是很有用的。

只带有关键字参数(kwargs)的函数

在使用以下这样的函数时,创建只接受关键字参数的函数来提供(强制)更多的清晰性是很有帮助的:

正如您所看到的,这可以通过在关键字参数之前放置单个*参数来轻松解决。如果我们把位置参数放在*参数之前,位置参数显然也会存在。

创建支持with语句的对象

例如,我们都知道如何使用with语句来打开文件或获取锁,但是我们可以实现自己的with语句吗? 当然,我们可以使用__enter__和__exit__方法来实现上下文管理协议:

这是在Python中实现上下文管理最常见的方法,但是还有更简单的实现方法:

上面的代码片段使用contextmanager管理器装饰器实现了内容管理协议。在进入with块时,tag函数(在yield之前)的第一部分会被执行,然后该with块被执行,最后,tag函数的其余部分会被执行。

使用__slots__节省内存

如果您曾经编写过一个创建某个类的大量实例的程序,您可能会注意到您的程序会突然需要大量内存。这是因为Python使用字典来表示类实例的属性,这使得它的速度很快,但是内存效率不高,这通常并不是一个问题。然而,如果它成为您的程序的一个问题时,您可以尝试使用__slots__:

这里的情况是,当我们定义了__slots__属性时,Python会使用小的固定大小的数组而不是字典来定义属性,这大大减少了每个实例所需的内存。使用__slots__也有一些缺点——我们不能声明任何新的属性,并且我们只能使用在__slots__上这些属性。而且,带有__slots__的类不能使用多重继承。

限制CPU和内存的使用

如果您不想优化您的程序内存或CPU使用,您只想把它限制在某个固定大小的内存上,那么Python也有一个这样的库来做到这一点:

这里我们可以看到设置最大CPU运行时间和最大内存使用限制的两个选项。对于CPU限制,我们首先获取特定资源(RLIMIT_CPU)的软限制和硬限制,然后使用参数指定的秒数和前面检索到的硬限制来设置它。最后,我们注册信号,如果CPU时间超过限制,该信号会导致系统退出。对于内存,我们再次检索软限制和硬限制,并使用带有大小参数的setrlimit和检索的硬限制来设置它。

控制什么可以导入,什么不可以导入

一些语言有非常明显的导出成员(变量、方法、接口)的控制机制,例如Golang,其中只有以大写字母开头的成员会被导出。另一方面,在Python中,所有东西都可以被导出,除非我们使用__all__:

根据上面的代码片段,我们知道只有bar函数会被导出。同样,我们可以让__all__为空,这样,当我们从这个模块导入的时候,任何东西都不会被导出,并且会导致AttributeError。

实现比较运算符的简单方式

考虑到目前已经有相当多的比较操作符——__lt__ 、__le__ 、 __gt__  或 __ge___,因此,为一个类实现所有的比较操作符是相当烦人的。但如果有更简单的方法可以实现呢?functools.total_ordering就派上用场了:

那么,这到底是怎么工作的呢?total_ordering装饰器用于简化实现类实例排序的过程。我们只需要定义__lt__和__eq__,它们是剩余操作的映射所需的最小值,装饰器就会为我们填充空白。

结论

并不是所有这些特性在日常的Python编程中都是必需的和有用的,但是它们中的一些可能会不时地派上用场,而且它们还可能会简化那些在其他情况下会非常冗长和难以实现的任务。我也想说明的是,所有这些特性是Python标准库的一部分,而其中的一些在我看来就像标准库中所具有的相当不标准的东西,所以当您想使用Python实现某些东西的时候,您首先应该去标准库中寻找它,如果您不能找到它,那么您可能还是不够努力(如果真的没有,那它肯定在一些第三方库中)。

完)


几款常见存储系统的对比分析 如何对比选择存储系统?本文给你答案!本文将详细对比NetApp、Lsilon、Vast Data、DDN lustre和WekaFS的五个存储系统的简单性、速度、规模及标准。 阅读详情

相关推荐

计算机组成原理实验:手把手教你用模拟程序实现中断机制(附完整代码)

本文通过一个计算机组成原理模拟实验,手把手教你从零实现一个可工作的中断系统。实验详细演示了如何配置中断控制器、编写主程序与中断服务程序,并观察中断响应、现场保护和恢复的全过程,深入解析了中断原理的核心机制。

473

Python简介

缩进 Python以缩进表达程序的格式框架,所以要严格控制缩进,一般是4个空格,或者一个 tab 键。注意:在 Python 开发中,Tab 和空格不要混用! 注释 单行注释: # 追加说明文字 注意:尽量在文字前面打个空格 在# 号前面需要追加两个空格。例如 print() # 注释 多行注释语法: """ ...

guo_qingxia的博客 1861

告别PS串口焦虑:深入解析AXI Uartlite IP核如何将ZYNQ PL任意引脚变成串口(从Vivado约束到驱动文件全解析)

本文深入解析AXI Uartlite IP核如何将ZYNQ PL任意引脚变成串口,从Vivado约束到驱动文件全解析。通过AXI Uartlite IP核,开发者可以突破PS端UART数量限制,实现高效串口通信。文章详细介绍了IP核架构、Vivado工程配置、驱动开发及调试技巧,帮助开发者快速掌握这一技术。

weixin_33736649的博客 469

9个不为人知的Python技巧

有很多介绍Python中各种很酷的功能(如变量拆包、偏函数、枚举可迭代对象)的文章,但说到Python时,还有很多东西可以谈论,这里我将尝试展示我所知道和使用的一些特性,我还没有在其他地...

小詹学python的博客 327

NIDS——suricata(一)

NIDS——suricata环境安装和规则编写

weixin_58666006的博客 1273

Playwright MCP:开启浏览器自动化的新篇章

在当今数字化时代,浏览器自动化技术在众多领域发挥着至关重要的作用,从简单的网页爬取到复杂的自动化测试,再到智能代理与网页的交互等场景,都离不开高效、可靠的浏览器自动化工具。而微软推出的项目,正是在这一领域的一次创新性探索,它为开发者带来了全新的视角和强大的功能支持。本文将深入探讨的概念、架构、代码示例、应用场景、注意事项以及未来发展方向,帮助读者全面了解这一前沿技术。

加入“Super Entity”,与全能开发团队共探AI智能体与数字人项目,开启前沿技术之旅。 5267

16个好用到爆的Python实用技巧!

Python 是一门用途广泛的编程语言,它具有大量的库和框架。有一些鲜为人知的 Python 编码技巧和库可以让你作为开发人员的工作更为轻松,编写代码更高效。本文将探讨一些鲜为人知的 Python 技巧,这些技巧非常有用,但并不广为人知。通过学习和使用这些技巧,可以帮你节省时间和精力,并使你的代码更加优雅和高效。那么,让我们深入探索 Python 语言的这些隐藏宝藏吧!

Python84310366的博客 2531

扫地机器人设计与实现——基于嵌入式系统的智能家居解决方案

本文介绍了基于嵌入式技术的扫地机器人设计与实现。通过利用STM32单片机、传感器、驱动系统等硬件组件,并结合路径规划与控制算法、远程控制等软件技术,设计出了一款具有智能避障、路径规划、自动充电等功能的扫地机器人。系统的开发不仅提高了清洁效率,也为进一步研究和优化扫地机器人提供了实践基础。

2201_76125393的博客 1639

每天都在用的20个Python技巧,让你从此告别平庸!

今天我将向大家分享日常工作中常用的20个Python技巧,小巧而优雅,让你的代码更加Pythonic

xyh2004的博客 2027

Deep SHAP 深度学习模型的可解释性分析

Deep SHAP 算法是一种用于解释深度学习模型的技术, 该算法通过将每个特征的重要性与输出值相关联来进行解释。本博客对深度学习的模型可解释性进行了分析。

cnjs1994的博客 5121

基于simulink的电气弹簧ES稳压控制模型仿真

若要补偿母线电压的谐波,需控制ES上的谐波,即在单闭环母线电压有效值控制的基础上,增加谐波抑制环节来进行谐波控制,现有的各种检测和抑制谐波的方法有采用模拟滤波器、傅里叶分析进行谐波分析、基于瞬时无功功率理论的方法等。当关键负载ZC为电流源型非线性负载时,电路原理图如图7所示,由于电流源型非线性负载可以等效为谐波电流源,关键负载电流ic便会含有谐波分量,导致输电线电流is和母线电压VS同样会含有谐波分量,导致供电质量的严重下降,对用电设备的正常工作造成影响。分别为流过线路阻抗、非关键负载、关键负载的电流,

FPGA/MATLAB学习教程/源码/项目合作开发 1633

30个Python操作小技巧

30个Python操作小技巧

Java癫疯的博客 921

jdbc从入门到精通(全)

前言 Java语言连接数据库(Java DataBase Connectivity) 面向接口/抽象编程(降低程序的耦合度,提高程序的扩展力)类似多态机制

码农研究僧的博客 1759

【实用】新手必知必会的 9 个 Python 技巧!

英文原文:https://martinheinz.dev/blog/1有很多介绍Python中各种很酷的功能(如变量拆包、偏函数、枚举可迭代对象)的文章,但说到Python时,还有很多东...

lsxxx2011的专栏 189

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

python时间比较大小_新手必会的9个Python技巧!

转载 | python那些事编辑 | 雷课小雷图 | 来源网络有很多介绍Python中各种很酷的功能(如变量拆包、偏函数、枚举可迭代对象)的文章,但说到Python时,还有很多东西可以谈论,这里我将尝试展示我所知道和使用的一些特性,我还没有在其他地方看到有人提到过它们。我们开始吧。清理字符串输入对用户输入进行清理的问题几乎适用于您编写的所有程序。通常情况下,将字符转换为小写或大写就足够了...

weixin_39672572的博客 129

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

python变量在使用前、必须先______9 个Python新手必知必会的技巧!

有很多介绍Python中各种很酷的功能(如变量拆包、偏函数、枚举可迭代对象)的文章,但说到Python时,还有很多东西可以谈论,这里我将尝试展示我所知道和使用的一些特性,我还没有在其他地方看到有人提到过它们。我们开始吧。1.清理字符串输入对用户输入进行清理的问题几乎适用于您编写的所有程序。通常情况下,将字符转换为小写或大写就足够了,有时您可以使用Regex来完成这项工作,但对于复杂的情况来说,可能...

weixin_39833454的博客 426

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

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

新手必会的 9 个 Python 教程

这里的情况是,当我们定义了__slots__属性时,Python会使用小的固定大小的数组而不是字典来定义属性,这大大减少了每个实例所需的内存。这是一个简单的例子,但是我们可以更进一步,使用unicodedata包和它的combining()函数来生成并进行映射,从而生成更大的重新映射表,我们可以使用它来删除字符串中的所有重音。那么,这到底是怎么工作的呢?Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

Trb201012的博客 918

Python | 新手必会的 9 个 Python 技巧

有很多介绍Python中各种很酷的功能(如变量拆包、偏函数、枚举可迭代对象)的文章,但说到Python时,还有很多东西可以谈论,这里我将尝试展示我所知道和使用的一些特性,我还没有在其他地方看到有人提到过它们。我们开始吧。

qq_46094651的博客 227

Python编程 | 新手必会的 9 个 Python 技巧

有很多介绍Python中各种很酷的功能(如变量拆包、偏函数、枚举可迭代对象)的文章,但说到Python时,还有很多东西可以谈论,这里我将尝试展示我所知道和使用的一些特性,我还没有在其他地方看到有人提到过它们。我们开始吧。 清理字符串输入 对用户输入进行清理的问题几乎适用于您编写的所有程序。通常情况下,将字符转换为小写或大写就足够了,有时您可以使用Regex来完成这项工作,但对于复杂的情况来说,可能有更好的方法: 在本例中,您可以看到空白字符“\n”和“\t”已被单个空格替换,而“\r”已被完全...

186

用python实现汇编功能_编程语言新手必会的9个Python技巧

有很多介绍Python中各种很酷的功能(如变量拆包、偏函数、枚举可迭代对象)的文章,但说到Python时,还有很多东西可以谈论,这里我将尝试展示我所知道和使用的一些特性,我还没有在其他地方看到有人提到过它们。我们开始吧。清理字符串输入对用户输入进行清理的问题几乎适用于您编写的所有程序。通常情况下,将字符转换为小写或大写就足够了,有时您可以使用Regex来完成这项工作,但对于复杂的情况来说,可能有更...

weixin_39569543的博客 929

python编程口诀_Python编程|新手必会的9个Python技巧

有很多介绍Python中各种很酷的功能(如变量拆包、偏函数、枚举可迭代对象)的文章,但说到Python时,还有很多东西可以谈论,这里我将尝试展示我所知道和使用的一些特性,我还没有在其他地方看到有人提到过它们。我们开始吧。这里要注意:很多人学Python过程中会遇到各种烦恼问题,没有人解答容易放弃。为此小编建了个Python全栈免费答疑.裙 :七衣衣九七七巴而五(数字的谐音)转换下可以找到了,不懂的...

weixin_39969340的博客 1768
上一篇: 既能让你挣钱又能让客户满意的13个模型
下一篇: 17个Python的牛逼骚操作,你都OK吗?
Wang_AI
博客等级 码龄12年 996粉丝 162原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值