被“嫌弃”的分号的一生:不要在Python中使用无用分号了

开发 后端
笔者准备了一篇小指南,解释为什么不应该在Python中使用分号,并列出了少数特殊情况。

本文转载自公众号“读芯术”(ID:AI_Discovery)

我常在C / C ++语言中看到很多分号。在代码中,分号表示语句终止。Python并未强制使用分号来分隔语句,但因为分号导致Python乱码的情况可不少。

最近,笔者正在学习Python的数据科学课程。讲师讲解了条件语句并编写了以下代码:

  1. temp =10;if temp <12: print('It is cold'); cold = True

笔者当时的反应是:这太可怕了!分号仅在Python中的非典型情况下使用。笔者准备了一篇小指南,解释为什么不应该在Python中使用分号,并列出了少数特殊情况。

语句终止符

 

[[331088]]

 

 

图源:unsplash

 

在许多大众的编程语言中,需要在每个语句的末尾添加分号。例如,在C ++中:

  1. int c =10
  2. int a = 5;printf('In C++, semicolon at the end is must'); 

但Python并非如此。Python是一种简洁的编程语言,你不需要添加不必要的字符和语法。在Python中,一条语句结束于一行的结尾(方括号,引号或括号除外)。例如:

  1. c = 10 
  2. a = 5print('No semicolons in Python') 

语句分隔符

Python中的分号表示分隔,而不是终止。它允许在同一行中编写多个语句。

  1. print('Statement1'); print('Statement 2'); print('Statement 3') 

此语法允许在单个语句的末尾加上分号:

  1. print('WhyGod? WHY?'); 

该语句表示print('...'),然后在下一句终止。因此它实际上是两个语句,其中第二个为空。即使该语言允许使用分号分隔语句,但大多数Python程序员都不会在其代码中使用它。

 

[[331089]]

 

 

图源:unsplash

 

Python应该是清晰可读的。分号之类的语法字符会导致不必要的混乱。如果将这样的代码发送给经验丰富的Python程序员,他可能不会再理你了。

  1. temp =10cold =False
  2.               if temp<15: print('It is cold'); cold =True; print('Another statement') 
  3.           print(cold); print('Done'); 

将多条语句强制放在一行上会使原本简单的代码难以阅读。

何时使用分号?

那么问题来了,既然分号既不美观又碍事,为什么Python中允许使用分号?

笔者认为,这是为了使两种编程语言之间的转换变得稍微容易一些。具有Java,C ++和PHP背景的程序员习惯性地将(无用的)终止符放在每一行的末尾。

但是,在下列这些情况下,分号也会派上用场:

从Shell运行脚本

最常见的一种情况是使用python-c' <script> '从shell运行一个简短的脚本。因为不能在此处使用缩进,所以需要键入许多用分号分隔的表达式。以下面语句为例:

  1. python-c 'import math; t = math.pi;print(int(t))’ 

另一个用例是exec语句:

  1. exec('fori in [100,200,300]: print(i);print(i*2)') 

评估表达式的副作用

[[331090]]

图源:unsplash

在Jupyter Notebook之类的交互式环境中工作时,最后一个表达式返回的值将以字符串形式输出。评估某个函数的副作用真的会很烦人,在matplotlib中查看这个问题会产生赘余。

笔者将在JupyterNotebook中创建一个简单的直方图。如下图所示,运行此脚本会在输出时添加多余的一行:Text(0.5,1.0,'Histogram')。

被“嫌弃”的分号的一生:不要在Python中使用无用分号了

这实际上是调用.set_title(...)函数的返回值。为了抑制输出,可以在最后一条语句的末尾添加一个分号:

  1. axis.set_title('Histogram',size=10); 

简洁就是伟大,我们在编写代码时应避免添加任何多余的字符。删掉那些多余的分号吧,仅在必要时使用即可。

 

责任编辑:赵宁宁 来源: 读芯术
相关推荐

2023-09-27 10:19:37

类型video函数

2022-08-10 14:36:05

Python循环函数

2015-04-23 08:51:53

2021-03-06 22:21:58

分号代码 语言

2021-09-28 08:05:56

黑客网络安全网络攻击

2023-08-31 09:10:18

JavaScript调试

2021-03-29 08:05:15

User项目安全

2019-04-15 14:05:56

MySQLUTF-8数据库

2015-08-03 09:33:21

PH程序员一生

2021-10-18 10:53:26

Go 代码技术

2018-07-16 16:29:26

编程函数代码

2020-06-04 08:10:30

Python字符串开发

2023-01-10 08:20:55

RocketMQ消息源码

2009-07-20 18:03:26

Scala程序Singleton对象

2020-07-08 09:30:29

Python编程语言终止符

2016-08-24 11:13:30

2022-07-29 16:39:02

PHP编程语言

2021-08-06 22:43:54

中断架构传递

2020-07-09 17:37:47

Linux网络包中断

2018-01-18 09:05:05

存储数据包分层
点赞
收藏

51CTO技术栈公众号