为什么看Python的代码,有时候会在数据结构的最后一项末尾加上逗号。直接来看,这个逗号很多余。

根据PEP81的解释:

Trailing commas are usually optional, except they are mandatory when making a tuple of one element

这里说末尾逗号不是必填的,除非你写了一个只有一个元素的元祖。

所以这么多人写的代码风格都是多余的?

不是的。PEP8在上面一句的后来接着写道,末尾的代码可以帮助减少bug:

  1. 比如多人协作项目,一个列表的项可能由不同的人添加,你留着一个逗号可以帮助下一个修改的人减少出bug的几率
  2. 因为两个被引号包裹的字符串,会有自动合并功能。所以这也是一个潜在的bug

PEP8继续提到,适合在结尾加上额外逗号的代码类似下面这样,末项以逗号结尾,再起一行加上闭合括号:

FILES = [
'setup.cfg',
'tox.ini',
]
initialize(FILES,
error=True,
)

但是,如果代码是下面这种形式,末尾逗号和闭合括号是紧连的,那这个逗号就没有必要了:

FILES = ['setup.cfg', 'tox.ini',]
initialize(FILES, error=True,)

什么时候Python的List,Tuple最后一个Item后面要加上一个逗号的更多相关文章

  1. Python中list,tuple,dict,set的区别和用法

    Python语言简洁明了,可以用较少的代码实现同样的功能.这其中Python的四个内置数据类型功不可没,他们即是list, tuple, dict, set.这里对他们进行一个简明的总结. List ...

  2. Python之创建tuple和“可变”的tuple

    Python之创建tuple tuple是另一种有序的列表,中文翻译为" 元组 ".tuple 和 list 非常类似,但是,tuple一旦创建完毕,就不能修改了. 同样是表示班里 ...

  3. [转] Python list、tuple、dict区别

    from: http://www.cnblogs.com/Michael-Kong/archive/2012/07/11/2585840.html Dictionary 是 Python 的内置数据类 ...

  4. Python list 和 tuple 使用小记

    list和tuple是Python内置的有序集合,一个可变,一个不可变.根据需要来选择使用它们. 1.内置数据类型,列表List >>> appleVersion = ['apple ...

  5. Python中list,tuple,dict,set的区别和用法(转)

    原文地址:http://www.cnblogs.com/soaringEveryday/p/5044007.html Python语言简洁明了,可以用较少的代码实现同样的功能.这其中Python的四个 ...

  6. python——元组(tuple)基本操作

    元组被称为只读列表,数据可被查询,但不能被修改,类似于列表的切片操作,元组写在小括号里面()元素之前用逗号隔开 对于一些不想被修改的数据,可以用元组来保存 #  创建元组 1)创建空元组 # 创建空元 ...

  7. python list 和 tuple详解

    list------------------------------------------------------------------------ Python内置的一种数据类型是列表:list ...

  8. Python list、tuple、dict区别

    Dictionary 是 Python 的内置数据类型之一, 它定义了键和值之间一对一的关系. 每一个元素都是一个 key-value 对, 整个元素集合用大括号括起来 您可以通过 key 来引用其值 ...

  9. Python——2list和tuple类型

    */ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:text.cpp * 作者:常轩 * 微信公众号:Worldhe ...

随机推荐

  1. 关联分析中寻找频繁项集的FP-growth方法

    关联分析是数据挖掘中常用的分析方法.一个常见的需求比如说寻找出经常一起出现的项目集合. 引入一个定义,项集的支持度(support),是指所有包含这个项集的集合在所有数据集中出现的比例. 规定一个最小 ...

  2. [蓝桥杯]2013蓝桥省赛B组题目及详解

    /*——————————————————————————————————————————————————————————— 题目:2013 高斯日记T-1 问题描述: 大数学家高斯有一个好习惯:无论如 ...

  3. webview 更新方法细节

    plus.webview.getWebviewById("user.home").evalJS("getHomeData()");//调用页面方法 plus.w ...

  4. C#中字符串转日期类型

    1,yyyyMMdd DateTime date = DateTime.ParseExact(", "yyyyMMdd", System.Globalization.Cu ...

  5. 多线程的休息室WaitSet详细介绍

    1. 所有对象都会有一个wait set,用于存放调用了该对象wait方法之后进入block状态的线程; 2. 线程被notify之后,不一定会立即执行; 3. 线程从wait set中唤醒的顺序不一 ...

  6. cocos 动画系统

    前面的话 cocos 动画系统支持任意组件属性和用户自定义属性的驱动,再加上可任意编辑的时间曲线和移动轨迹编辑功能,就可以制作出各种动态效果 概述 Animation 组件可以以动画方式驱动所在节点和 ...

  7. luogu P2194 HXY烧情侣

    残忍的题面 我们来看这一道题,其实冗长的题目告诉我们一个核心——用tarjan tarjan是用来干什么呢?是用来求强连通分量(代码中指sc) 求出来又有什么用呢?每当我们求出一个强连通分量时,就去计 ...

  8. Nginx+rtmp+ffmpeg 搭建推流服务器

    1. 安装nginx服务器 1.1 clone $ brew tap denji/homebrew-nginx 1.2 安装 $ brew install nginx-full --with-rtmp ...

  9. [SHOI2007]善意的投票

    题目描述 幼儿园里有n个小朋友打算通过投票来决定睡不睡午觉.对他们来说,这个问题并不是很重要,于是他们决定发扬谦让精神.虽然每个人都有自己的主见,但是为了照顾一下自己朋友的想法,他们也可以投和自己本来 ...

  10. 机器学习KNN算法

    KNN(最邻近规则分类K-Nearest-Neighibor)KNN算法 1. 综述      1.1 Cover和Hart在1968年提出了最初的邻近算法      1.2 分类(classific ...