首页 > 编程语言 >Python 逗号的巧用

Python 逗号的巧用

时间:2024-05-13 16:21:31浏览次数:24  
标签:... Python Dilbert Alice 列表 逗号 添加 巧用

Python 逗号的巧用

如果需要在中的列表、字典或集合常量中添加或移除项,记住一个窍门:在所有行后面都添加一个逗号。

还不太明白?来看一个示例。假设在代码中有下面这个由名字组成的列表:

>>> names = ['Alice', 'Bob', 'Dilbert']

在修改这个名字列表时,通过git diff查看改动可能有点不方便。大多数源码控制系统都是基于行的,因此无法标出同一行中的多个改动。

一个快速改进是根据编码规范,将列表、字典或集合常量分割成多行,如下所示:

>>> names = [
...     'Alice',
...     'Bob',
...     'Dilbert'
... ]

这样每项独占一行,因此可以清楚地从源码控制系统的diff中看出哪里进行了添加、删除和修改操作。虽然只是一个小改动,但我发现这有助于避免很多愚蠢的错误,也让团队成员能够更方便地审阅我的代码改动。

但现在依然有两个编辑情形会导致混乱,即在列表末尾添加或移除内容时,还需要手动调整逗号来保持格式的一致性。
比如需要向列表中添加一个名字Jane,则需要在Dilbert这一行的末尾添加一个逗号来避免一个讨厌的错误:

>>> names = [
...     'Alice',
...     'Bob',
...     'Dilbert' # <- 缺失逗号!
...     'Jane'
]

在查看这个列表的内容时,请做好心理准备:

>>> names
['Alice', 'Bob', 'DilbertJane']

可以看到,将字符串DilbertJane合并成了DilbertJane。这称为字符串字面值拼接,是文档中有记录的刻意行为。这种行为可能会在程序中引入令人难以琢磨的bug:

以空白符分隔多个相连的字符串或byte字面值,即使它们各自使用不同的引号,也会执行拼接操作。

详见文档:“String literal concatenation”。

在某些情况下,字符串字面值拼接是一个有用的特性。例如,在跨越多行的长字符串中可以省去反斜杠:

my_str = ('This is a super long string constant '
          'spread out across multiple lines. '
          'And look, no backslash characters needed!')

但另一方面,这个特性有时又会成为负担。那么如何解决这个问题呢?

Dilbert后添加缺失的逗号就能避免两个字符串合并了:

>>> names = [
...     'Alice',
...     'Bob',
...     'Dilbert',
...     'Jane'
]

现在回到原来的问题。为了向列表添加一个新名字,需要修改两行代码。这同样让开发人员很难从git diff看出到底做了什么改动:到底是添加了一个新名字,还是修改了Dilbert这个名字?

幸运的是语法留有余地,让我们可以一劳永逸地解决这个逗号放置问题。只要遵循一种能够避免这个问题的编码风格即可,下面来看具体方法。

在中,可以在列表、字典和集合常量中的每一项后面都放置一个逗号,包括最后一项。因此只要记住在每一行末尾都加上一个逗号,就可以避免逗号放置问题。

下面是示例的最终版:

>>> names = [
...     'Alice',
...     'Bob',
...     'Dilbert',
... ]

看到Dilbert后面的那个逗号了吗?现在能方便地添加或移除新的项,无须再修改逗号了。这不仅让各行代码保持一致,而且源码控制系统生成的diff清晰整洁,让代码审阅者心情愉悦。看到没,有时魔法就藏在这些细微之处。

关键要点

  • 合理的格式化及逗号放置能让列表、字典和集合常量更容易维护。
  • 的字符串字面值拼接特性既可能带来帮助,也可能引入难以发现的bug。

标签:...,Python,Dilbert,Alice,列表,逗号,添加,巧用
From: https://www.cnblogs.com/wenyuan519/p/18189446

相关文章

  • Python调用终端模拟红绿灯
    Python调用终端模拟红绿灯一、需求分析1.需要实现的功能(1)通过控制台输入绿灯、黄灯、红灯的时间(2)输入完成后,按回车,先绿灯倒计时,然后黄灯倒计时,然后红灯倒计时,再到绿灯倒计时,周而复始。2.对类的分析静态特征(1)三个数字:红灯、黄灯、绿灯(2)两个电子屏一个电子屏显示一个数......
  • Python操作数据库
    简介pymysql:纯Python实现的一个驱动。因为是纯Python编写的,因此执行效率不如MySQL-python。并且也因为是纯Python编写的,因此可以和Python代码无缝衔接。MySQLConnector/Python:MySQL官方推出的使用纯Python连接MySQL的驱动。因为是纯Python开发的,效率不高。MySQL-python:......
  • 使用 Python 旋转PDF页面、或调整PDF页面顺序
    在将纸质文档扫描成PDF电子文档时,有时可能会出现页面方向翻转或者页面顺序混乱的情况。为了确保更好地浏览和查看PDF文件,本文将分享一个使用Python来旋转PDF页面或者调整PDF页面顺序的解决方案。要实现Python对PDF页面进行设置,我们需要用到第三方库 Spire.PDFforPython。该库......
  • 使用python在windows系统操作快捷方式
    其实问题是由上一篇文章(https://www.cnblogs.com/anpengapple/p/18179353)的结尾引出来的。不需要了解背景的话,我现在需要做的是,右键打开桌面上的chrome快捷方式的属性,在目标的后面增加一个参数。我不想傻傻地手动添加,想交给程序来处理。 首先需要简单来说一下,windows的快捷方式......
  • 用python将csv文件转换为exl文件
    使用pandas库:pandas相当于python中excel:它使用表(也就是dataframe),能在数据上做各种变换,但还有其他很多功能。os库:在使用之前都要先导入这个库(确保已经安装):下面是一个csv文件转成exl文件的实例:这个代码中定义了一个根据一定规则处理csv文件转exl文件的函数:首先导入了......
  • 【Python】模拟windows文件名排序(自动处理文件名中有数字类型排序)
    实现了一种模拟windows排序的python方法,其排序规则为:不处理浮点数特殊字符(如:&、$、#等)排在数字和字母之前;数字优先于字母排序;数字是连着的整数,应该按照整数进行排序;小写字母排在大写字母前面;英文字符按字母表顺序排序; defcustom_sort_key(str_value):digita......
  • 推荐几款火爆的Python在线编辑器
    在当今数字化时代,编程已成为一项不可或缺的技能。Python作为一种简单易学且功能强大的编程语言,受到了广大编程爱好者和专业开发人员的青睐。为了方便大家随时随地编写和运行Python代码,市面上涌现了许多优秀的在线Python编辑器。本文将为您推荐几款目前非常火爆的Python在线编辑器......
  • 第十二届蓝桥杯选拔赛 python
    第一题(难度系数2,18个计分点) 编程实现:输入一个正整数n,计算出n乘100的积。 输入描述:输入一个正整数n输出描述:输出n乘100的积 样例输入:2样例输出:200  第二题(难度系数3,20个计分点) 编程实现:给定一个正整数,判断这个正整......
  • python 基本日期和时间类型 datetime
    datetime说明datetime模块提供了处理日期和时间的类。它可以帮助你执行日期和时间的计算、转换以及格式化等操作。模块包含了日期(date)、时间(time)、日期时间(datetime)、时间间隔(timedelta)、时区(tzinfo)等类。datetime类:用于操作日期和时间的类,包括年、月、日、时、分、秒等信息......
  • 新版FLASK下python内存马的研究
    新版FLASK下python内存马的研究风起2月中旬的某一天,跟@Ic4_F1ame无聊时聊起了出题的事。当时是打算出道python题目(菜......