热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Python程序员需要知道的30个技巧(你知道几个?)

如果你让一个Python程序员说一下Python的优势,他会说简洁以及高可读是最有影响力的优势。为证明上述两点,在这个Python教程里,

图片.png

如果你让一个 Python 程序员说一下 Python 的优势,他会说简洁以及高可读是最有影响力的优势。为证明上述两点,在这个 Python 教程里,我们将聊聊许多基本的 Python 建议和技巧。

我们从开始使用 Python 便收集这些有用的捷径(贴士与技巧)。分享一些我们知道,同时又能造福于人的知识,有什么事情比这更棒吗?

所以今天我们带来另一些基本的 Python 贴士与技巧,所有的这些技巧都能帮助你压缩代码并且优化运行。此外,你可以在日常工作中很容易地在真实项目中使用他们。

私信小编资料即可自动获取大量Python视频教程以及各类PDF!

给程序员的 30 个基本 Python 贴士与技巧
贴士#1. 原地交换两个数字

Python 提供了一个直观的在一行代码中赋值与交换(变量值)的方法,请参见下面的示例:

图片.png

赋值的右侧形成了一个新的元组,左侧立即解析(unpack)那个(未被引用的)元组到变量 和

一旦赋值完成,新的元组变成了未被引用状态并且被标记为可被垃圾回收,最终也完成了变量的交换。

贴士#2. 链状比较操作符

比较操作符的聚合是另一个有时很方便的技巧:​

Python 程序员需要知道的 30 个技巧(你知道几个?)

​贴士#3. 使用三元操作符来进行条件赋值

三元操作符是 if-else 语句也就是条件操作符的一个快捷方式:

Python 程序员需要知道的 30 个技巧(你知道几个?)

这里给出几个你可以用来使代码紧凑简洁的例子。下面的语句是说“如果 y 是 9,给 x 赋值 10,不然赋值为 20”。如果需要的话我们也可以延长这条操作链。

Python 程序员需要知道的 30 个技巧(你知道几个?)

同样地,我们可以对类做这种操作:

Python 程序员需要知道的 30 个技巧(你知道几个?)

在上面的例子里 classA 与 classB 是两个类,其中一个类的构造函数会被调用。

下面是另一个多个条件表达式链接起来用以计算最小值的例子:

Python 程序员需要知道的 30 个技巧(你知道几个?)

我们甚至可以在列表推导中使用三元运算符:

图片.png

贴士#4. 多行字符串

基本的方式是使用源于 C 语言的反斜杠:

图片.png

另一个技巧是使用三引号:

图片.png

上面方法共有的问题是缺少合适的缩进,如果我们尝试缩进会在字符串中插入空格。所以最后的解决方案是将字符串分为多行并且将整个字符串包含在括号中:

Python 程序员需要知道的 30 个技巧(你知道几个?)

贴士#5. 存储列表元素到新的变量中

我们可以使用列表来初始化多个变量,在解析列表时,变量的数目不应该超过列表中的元素个数:【译者注:元素个数与列表长度应该严格相同,不然会报错】

Python 程序员需要知道的 30 个技巧(你知道几个?)

贴士#6. 打印引入模块的文件路径

如果你想知道引用到代码中模块的绝对路径,可以使用下面的技巧:

Python 程序员需要知道的 30 个技巧(你知道几个?)

贴士#7. 交互环境下的 “_” 操作符

这是一个我们大多数人不知道的有用特性,在 Python 控制台,不论何时我们测试一个表达式或者调用一个方法,结果都会分配给一个临时变量: _(一个下划线)。

Python 程序员需要知道的 30 个技巧(你知道几个?)

“_” 是上一个执行的表达式的输出。

贴士#8. 字典/集合推导

与我们使用的列表推导相似,我们也可以使用字典/集合推导,它们使用起来简单且有效,下面是一个例子:

图片.png

注&#xff1a;两个语句中只有一个 <:> 的不同&#xff0c;另&#xff0c;在 Python3 中运行上述代码时&#xff0c;将 改为 。

贴士#9. 调试脚本

我们可以在 模块的帮助下在 Python 脚本中设置断点&#xff0c;下面是一个例子&#xff1a;

Python 程序员需要知道的 30 个技巧&#xff08;你知道几个&#xff1f;&#xff09;

我们可以在脚本中任何位置指定 并且在那里设置一个断点&#xff0c;相当简便。

贴士#10. 开启文件分享

Python 允许运行一个 HTTP 服务器来从根路径共享文件&#xff0c;下面是开启服务器的命令&#xff1a;

# Python 2

Python 程序员需要知道的 30 个技巧&#xff08;你知道几个&#xff1f;&#xff09;

# Python 3

Python 程序员需要知道的 30 个技巧&#xff08;你知道几个&#xff1f;&#xff09;

上面的命令会在默认端口也就是 8000 开启一个服务器&#xff0c;你可以将一个自定义的端口号以最后一个参数的方式传递到上面的命令中。

贴士#11. 检查 Python 中的对象

我们可以通过调用 dir() 方法来检查 Python 中的对象&#xff0c;下面是一个简单的例子&#xff1a;

Python 程序员需要知道的 30 个技巧&#xff08;你知道几个&#xff1f;&#xff09;

Python 程序员需要知道的 30 个技巧&#xff08;你知道几个&#xff1f;&#xff09;

贴士#12. 简化 if 语句

我们可以使用下面的方式来验证多个值&#xff1a;

Python 程序员需要知道的 30 个技巧&#xff08;你知道几个&#xff1f;&#xff09;

而不是&#xff1a;

Python 程序员需要知道的 30 个技巧&#xff08;你知道几个&#xff1f;&#xff09;

或者&#xff0c;对于 in 操作符我们也可以使用 ‘{1,3,5,7}’ 而不是 ‘[1,3,5,7]’&#xff0c;因为 set 中取元素是 O(1) 操作。最后&#xff0c;如果你的时间不是很紧张&#xff0c;并且又想快速的python提高&#xff0c;最重要的是不怕吃苦&#xff0c;建议你可以架微♥信&#xff1a;762459510 &#xff0c;那个真的很不错&#xff0c;很多人进步都很快&#xff0c;需要你不怕吃苦哦&#xff01;大家可以去添加上看一下~

贴士#13. 运行时检测 Python 版本

当正在运行的 Python 低于支持的版本时&#xff0c;有时我们也许不想运行我们的程序。为达到这个目标&#xff0c;你可以使用下面的代码片段&#xff0c;它也以可读的方式输出当前 Python 版本&#xff1a;

Python 程序员需要知道的 30 个技巧&#xff08;你知道几个&#xff1f;&#xff09;

或者你可以使用 sys.version_info >&#61; (3, 5) 来替换上面代码中的 sys.hexversion !&#61; 50660080&#xff0c;这是一个读者的建议。

在 Python 2.7 上运行的结果&#xff1a;

图片.png

在 Python 3.5 上运行的结果&#xff1a;

图片.png

贴士#14. 组合多个字符串

如果你想拼接列表中的所有记号&#xff0c;比如下面的例子&#xff1a;

Python 程序员需要知道的 30 个技巧&#xff08;你知道几个&#xff1f;&#xff09;

现在&#xff0c;让我们从上面给出的列表元素新建一个字符串&#xff1a;

Python 程序员需要知道的 30 个技巧&#xff08;你知道几个&#xff1f;&#xff09;

贴士#15. 四种翻转字符串/列表的方式
# 翻转列表本身

Python 程序员需要知道的 30 个技巧&#xff08;你知道几个&#xff1f;&#xff09;

# 在一个循环中翻转并迭代输出

Python 程序员需要知道的 30 个技巧&#xff08;你知道几个&#xff1f;&#xff09;

# 一行代码翻转字符串

图片.png

输出为 “nohtyP tseT”

# 使用切片翻转列表

Python 程序员需要知道的 30 个技巧&#xff08;你知道几个&#xff1f;&#xff09;

上面的命令将会给出输出 [5,3,1]。

贴士#16. 玩转枚举

使用枚举可以在循环中方便地找到&#xff08;当前的&#xff09;索引&#xff1a;

Python 程序员需要知道的 30 个技巧&#xff08;你知道几个&#xff1f;&#xff09;

贴士#17. 在 Python 中使用枚举量

我们可以使用下面的方式来定义枚举量&#xff1a;

图片.png

贴士#18. 从方法中返回多个值

并没有太多编程语言支持这个特性&#xff0c;然而 Python 中的方法确实&#xff08;可以&#xff09;返回多个值&#xff0c;请参见下面的例子来看看这是如何工作的&#xff1a;最后&#xff0c;如果你的时间不是很紧张&#xff0c;并且又想快速的python提高&#xff0c;最重要的是不怕吃苦&#xff0c;建议你可以价位♥&#xff08;同音&#xff09;&#xff1a;762459510 &#xff0c;那个真的很不错&#xff0c;很多人进步都很快&#xff0c;需要你不怕吃苦哦&#xff01;大家可以去添加上看一下~

Python 程序员需要知道的 30 个技巧&#xff08;你知道几个&#xff1f;&#xff09;

贴士#19. 使用 * 运算符&#xff08;splat operator&#xff09;来 unpack 函数参数
  • 运算符&#xff08;splat operator&#xff09;提供了一个艺术化的方法来 unpack 参数列表&#xff0c;为清楚起见请参见下面的例子&#xff1a;

Python 程序员需要知道的 30 个技巧&#xff08;你知道几个&#xff1f;&#xff09;

贴士#20. 使用字典来存储选择操作

我们能构造一个字典来存储表达式&#xff1a;

Python 程序员需要知道的 30 个技巧&#xff08;你知道几个&#xff1f;&#xff09;

贴士#21. 一行代码计算任何数的阶乘
Python 2.x.

Python 程序员需要知道的 30 个技巧&#xff08;你知道几个&#xff1f;&#xff09;

Python 3.x.

Python 程序员需要知道的 30 个技巧&#xff08;你知道几个&#xff1f;&#xff09;

贴士#22. 找到列表中出现最频繁的数

Python 程序员需要知道的 30 个技巧&#xff08;你知道几个&#xff1f;&#xff09;

贴士#23. 重置递归限制

Python 限制递归次数到 1000&#xff0c;我们可以重置这个值&#xff1a;

图片.png

请只在必要的时候采用上面的技巧。

贴士#24. 检查一个对象的内存使用

在 Python 2.7 中&#xff0c;一个 32 比特的整数占用 24 字节&#xff0c;在 Python 3.5 中利用 28 字节。为确定内存使用&#xff0c;我们可以调用 getsizeof 方法&#xff1a;

在 Python 2.7 中

图片.png

在 Python 3.5 中

Python 程序员需要知道的 30 个技巧&#xff08;你知道几个&#xff1f;&#xff09;

贴士#25. 使用 slots 来减少内存开支

你是否注意到你的 Python 应用占用许多资源特别是内存&#xff1f;有一个技巧是使用 slots 类变量来在一定程度上减少内存开支。

Python 程序员需要知道的 30 个技巧&#xff08;你知道几个&#xff1f;&#xff09;

很明显&#xff0c;你可以从结果中看到确实有内存使用上的节省&#xff0c;但是你只应该在一个类的内存开销不必要得大时才使用 slots。只在对应用进行性能分析后才使用它&#xff0c;不然地话&#xff0c;你只是使得代码难以改变而没有真正的益处。

【译者注&#xff1a;在我的 win10 python2.7 中上面的结果是&#xff1a;

图片.png

所以&#xff0c;这种比较方式是不那么让人信服的&#xff0c;使用 slots 主要是用以限定对象的属性信息&#xff0c;另外&#xff0c;当生成对象很多时花销可能会小一些&#xff0c;具体可以参见 python 官方文档:

The slots declaration takes a sequence of instance variables and reserves just enough space in each instance to hold a value for each variable. Space is saved because dict is not created for each instance. 】


贴士#26. 使用 lambda 来模仿输出方法

图片.png

贴士#27. 从两个相关的序列构建一个字典

图片.png

贴士#28. 一行代码搜索字符串的多个前后缀

Python 程序员需要知道的 30 个技巧&#xff08;你知道几个&#xff1f;&#xff09;

贴士#29. 不使用循环构造一个列表

Python 程序员需要知道的 30 个技巧&#xff08;你知道几个&#xff1f;&#xff09;

贴士#30. 在 Python 中实现一个真正的 switch-case 语句

下面的代码使用一个字典来模拟构造一个 switch-case。最后&#xff0c;如果你的时间不是很紧张&#xff0c;并且又想快速的python提高&#xff0c;最重要的是不怕吃苦&#xff0c;建议你可以架微♥信&#xff1a;762459510 &#xff0c;那个真的很不错&#xff0c;很多人进步都很快&#xff0c;需要你不怕吃苦哦&#xff01;大家可以去添加上看一下~

Python 程序员需要知道的 30 个技巧&#xff08;你知道几个&#xff1f;&#xff09;

私信小编资料即可自动获取大量Python视频教程以及各类PDF&#xff01;

推荐阅读
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 本文介绍了在使用Python中的aiohttp模块模拟服务器时出现的连接失败问题,并提供了相应的解决方法。文章中详细说明了出错的代码以及相关的软件版本和环境信息,同时也提到了相关的警告信息和函数的替代方案。通过阅读本文,读者可以了解到如何解决Python连接服务器失败的问题,并对aiohttp模块有更深入的了解。 ... [详细]
  • HTML学习02 图像标签的使用和属性
    本文介绍了HTML中图像标签的使用和属性,包括定义图像、定义图像地图、使用源属性和替换文本属性。同时提供了相关实例和注意事项,帮助读者更好地理解和应用图像标签。 ... [详细]
  • 无损压缩算法专题——LZSS算法实现
    本文介绍了基于无损压缩算法专题的LZSS算法实现。通过Python和C两种语言的代码实现了对任意文件的压缩和解压功能。详细介绍了LZSS算法的原理和实现过程,以及代码中的注释。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • Android系统移植与调试之如何修改Android设备状态条上音量加减键在横竖屏切换的时候的显示于隐藏
    本文介绍了如何修改Android设备状态条上音量加减键在横竖屏切换时的显示与隐藏。通过修改系统文件system_bar.xml实现了该功能,并分享了解决思路和经验。 ... [详细]
  • 本文讨论了在数据库打开和关闭状态下,重新命名或移动数据文件和日志文件的情况。针对性能和维护原因,需要将数据库文件移动到不同的磁盘上或重新分配到新的磁盘上的情况,以及在操作系统级别移动或重命名数据文件但未在数据库层进行重命名导致报错的情况。通过三个方面进行讨论。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • 前端性能优化无损压缩webp格式的图片
    一、什么是webpWebP格式,谷歌开发的一种旨在加快图片加载速度的图片格式。图片压缩体积大约只有JPEG的23,并能节省大量的服务器宽带资源和数据空 ... [详细]
author-avatar
Morpheus尘世美t
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有