为了解释为什么提出这个问题,我将解释python3常用的多行列表/字典符号以及实际的语法定义是什么。

这是python3中最常用的多行列表符号:

list_variable = [

'value1',

'value2',

# The last comma after 'value2' is sometimes omitted.

]

并且,要了解解析器如何识别此符号,我们需要查看语法定义(link)。

在python的定义中,类似列表的定义与此类似:

list_like: '[' [element (',' element)* [','] ] ']'

如果您不熟悉语法定义或者我是一个糟糕的摘要者,请允许我多解释一下:

''表示它实际上是一个字符。例如,'['和']'是列表的结尾或开头,以纯字符表示,它们将是['value1','value2',]在实际代码中。

element是其类型的预期元素。例如,如果是列表,它将是单个变量。如果是字典,则为key ':' value。

[]表示其中的所有可选内容。

()表示内部的所有事物都在一个集合中。即所有内容都融合在一起。

*表示之前的语法集,该语法集可能出现0次或多次。在此示例中,(',' element)可以省略,但也可以出现3次。

我几乎忘了提到,这些规则是在空白管理完成后应用的。

好的,让我们看一下列表的解析示例:

[1]

将被解析为'[' element ']'

[1, ]

将是'[' element ',' ']'

[1, 2]

将是'[' element (',' element) ']'

[1, 2, ]

将是'[' element (',' element) ',' ']'

因此,如您所见,在示例3中,逗号与2而不是1配对。

另外,在该示例中,最后一个逗号未与2配对-实际上,在语法定义方面,它没有任何配对。

现在的实际问题是:

除了大多数语言都普遍使用逗号之外,还有更多理由在换行符之前使用逗号吗?

我认为在换行符后使用逗号是明智的,原因如下:

它更类似于实际的语法定义。

它确保始终有确切数量的逗号(元素数-1),并且在处理讨厌其他引号的语言(例如SQL)时会有所帮助。 < / li>

它也是git友好的,如逗号前表示法:如果将新元素添加到列表中,则git diff仅显示+ , new_element。

实际上,如果有人忘记在old_element之后添加逗号(或者因为该语言不允许使用其他逗号),则以换行之前的逗号表示,之后添加元素的人将看到git记录如下:

- old_element

+ old_element,

+ new_element,

换行符后需要加逗号吗c语言,为什么大多数编程语言都在换行符之前而不是换行符之后使用逗号?...相关推荐

  1. 运算符重载(加减运算符、前置加加(减减)后置加加(减减)运算符、赋值运算符、输入输出运算符、关系运算符、函数调用)

    编译器对于一个类会默认生成以几种函数: 1.默认构造函数(空形参,空函数体) 2.默认拷贝构造函数(浅拷贝,也叫值拷贝.字节拷贝) 3.析构函数(空形参,空函数体.析构函数要求形参列表必须是空的,所以 ...

  2. word删除分节符后之前的格式乱了_分页符分节符,你知道多少

    Word中,我们经常会遇到分页符和分节符,它们对文档排版,打印,页边距调整,批量调整文档格式等非常重要. 分隔符包括:分页符和分节符. 分页符:是分页的一种符号,实则就是一条虚线.一般是插在每页的后面 ...

  3. 微信分享功能问题-描述内容换行,导致js加载失败

    jsContent内容存在换行符,导致js处理失败, 解决办法,在后台接口中替换'/r/n'为空,并截取前30位 weiXinJsSdk.setSharcontent(StringUtils.isNo ...

  4. 分区助手迁移系统盘到固态,注册表调盘符后出现黑屏问题的解决方案

    更新个可能的简单解决方案,就是原先调盘符后再看注册表编辑器,不是会出现个X盘嘛,直接再给这个X改名改成随便一个和原来所有盘都不一样的,然后再重启,有概率可以修复. 注:本方案为最终傻瓜方案,实属无奈之 ...

  5. R语言 从excel导入数据,由于内容有excel的换行符导致列数不一致的问题

    R语言 从excel导入数据,由于内容有excel的换行符导致列数不一致的问题 问题描述 解决办法 1. 在excel中先通过trim和clean函数进行预处理 2. 读入数据 简单的方法是,将清理后 ...

  6. 补充switch语句的内容和逗号运算符(C语言case后没有break的switch语句,会继续执行后面的语句再退出)

    补充switch语句的内容和逗号运算符 C语言case后没有break的switch语句,会继续执行后面的语句再退出 补充逗号运算符 C语言case后没有break的switch语句,会继续执行后面的 ...

  7. linux用户登陆后无法加在.bashrc

    今天遇到一个问题,linux下某用户登陆后无法加在其自身的.bashrc, 通过source .bashrc发现.bashrc是没有问题的,文件的权限也是没有问题的. 后来发现是因为该用户下的.bas ...

  8. keras/tensorflow 模型保存后重新加载准确率为0 model.save and load giving different result

    我在用别人的代码跑程序的时候遇到了这个问题: keras 模型保存后重新加载准确率为0 GitHub上有个issue:model.save and load giving different resu ...

  9. exist后select加数字的理解

      查看文章     相关子查询中exists后select 加数字的理解 2010-07-23 17:16 前提:两个基础表 SQL> select * from courses; COURS ...

最新文章

  1. JVM调优总结 -Xms -Xmx -Xmn -Xss
  2. 大数据多属性的数据架构设计
  3. JavaScript基础——Date对象
  4. ESP8266中char数据类型注意事项
  5. 单线驱动74hc595(转)
  6. RDS还原数据库时报错:ERROR 1227 (42000) at line 78664
  7. 山东省德州市有哪些明星?
  8. mysql配置文件参数详解 my.cnf
  9. Flutter进阶第10篇: 本地存储,封装本地存储类,实现最简单的状态管理
  10. Java中abstract关键字详解
  11. 云计算发展和容器息息相关丨阿里云、腾讯云争相抢镜【软件网每日新闻播报│第10-25期】
  12. 2012移动互联网之人在囧途
  13. Face Swapping: Automatically Replacing Faces in Photographs论文阅读
  14. 【老生谈算法】matlab实现细菌觅食算法(BFA)源码——粒子群算法
  15. Java NIO Selector , SelectionKey , SocketChannel , ServerSocketChannel
  16. Tomcat7集群共享Session 基于redis进行统一管理
  17. 努比亚Z11系统服务器选择,良心!努比亚Z11系列机型系统升级新版本后性能提升明显...
  18. 推荐几款性价比高的优盘
  19. 改名叫Benson...
  20. android备份recovery,Recovery(Android手机备份功能)

热门文章

  1. sql中的窗口函数:lead,lag
  2. 一年共读50本心理学图书是怎样的体验?
  3. 无需下载 网页版 Matlab
  4. thinkpad e40 安装 nvidia显卡驱动之后
  5. 如何建设企业入侵防御体系
  6. 年轻父母要注意,给孩子取名误区不能犯
  7. stm32h750/stm32h743原理图和pcb源文件
  8. Dell戴尔服务器添加新硬盘认不到解决方法
  9. solidwork放置螺丝孔以及显示螺纹的问题
  10. mysql 迪卡尔运算_「笛卡尔乘积」mysql笛卡儿积 - seo实验室