被“嫌弃”的分号的一生:不要在Python中使用无用分号了
云栖号资讯:【点击查看更多行业资讯】
在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来!
我常在C / C ++语言中看到很多分号。在代码中,分号表示语句终止。Python并未强制使用分号来分隔语句,但因为分号导致Python乱码的情况可不少。
最近,笔者正在学习Python的数据科学课程。讲师讲解了条件语句并编写了以下代码:
temp =10;if temp <12: print( It is cold ); cold = True;
笔者当时的反应是:这太可怕了!分号仅在Python中的非典型情况下使用。笔者准备了一篇小指南,解释为什么不应该在Python中使用分号,并列出了少数特殊情况。
语句终止符
在许多大众的编程语言中,需要在每个语句的末尾添加分号。例如,在C ++中:
int c =10; int a = 5;printf( In C++, semicolon at the end is must );
但Python并非如此。Python是一种简洁的编程语言,你不需要添加不必要的字符和语法。在Python中,一条语句结束于一行的结尾(方括号,引号或括号除外)。例如:
c = 10 a = 5print( No semicolons in Python )
语句分隔符
Python中的分号表示分隔,而不是终止。它允许在同一行中编写多个语句。
print( Statement1 ); print( Statement 2 ); print( Statement 3 )
此语法允许在单个语句的末尾加上分号:
print( WhyGod? WHY? );
该语句表示print( ... ),然后在下一句终止。因此它实际上是两个语句,其中第二个为空。即使该语言允许使用分号分隔语句,但大多数Python程序员都不会在其代码中使用它。
Python应该是清晰可读的。分号之类的语法字符会导致不必要的混乱。如果将这样的代码发送给经验丰富的Python程序员,他可能不会再理你了。
temp =10; cold =False; if temp<15: print( It is cold ); cold =True; print( Another statement ) print(cold); print( Done );
将多条语句强制放在一行上会使原本简单的代码难以阅读。
何时使用分号?
那么问题来了,既然分号既不美观又碍事,为什么Python中允许使用分号?
笔者认为,这是为了使两种编程语言之间的转换变得稍微容易一些。具有Java,C ++和PHP背景的程序员习惯性地将(无用的)终止符放在每一行的末尾。
但是,在下列这些情况下,分号也会派上用场:
从Shell运行脚本
最常见的一种情况是使用python-c
python-c import math; t = math.pi;print(int(t))’
另一个用例是exec语句:
exec( fori in [100,200,300]: print(i);print(i*2) )
评估表达式的副作用
在Jupyter Notebook之类的交互式环境中工作时,最后一个表达式返回的值将以字符串形式输出。评估某个函数的副作用真的会很烦人,在matplotlib中查看这个问题会产生赘余。
笔者将在JupyterNotebook中创建一个简单的直方图。如下图所示,运行此脚本会在输出时添加多余的一行:Text(0.5,1.0, Histogram )。
这实际上是调用.set_title(...)函数的返回值。为了抑制输出,可以在最后一条语句的末尾添加一个分号:
axis.set_title( Histogram ,size=10);
简洁就是伟大,我们在编写代码时应避免添加任何多余的字符。删掉那些多余的分号吧,仅在必要时使用即可。
【云栖号在线课堂】每天都有产品技术专家分享!
课程地址:https://yqh.aliyun.com/live立即加入社群,与专家面对面,及时了解课程最新动态!
【云栖号在线课堂 社群】https://c.tb.cn/F3.Z8gvnK
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
新来的"大神"用策略模式把if else给"优化"了,技术总监说:能不能想好了再改?
GitHub 15.4k Star 的Java工程师成神之路,不来了解一下吗! GitHub 15.4k Star 的Java工程师成神之路,真的不来了解一下吗! GitHub 15.4k Star 的Java工程师成神之路,真的真的不来了解一下吗! 本文来自作者投稿,原作者:上帝爱吃苹果 目前在魔都,贝壳找房是我的雇主,平时关注一些 java 领域相关的技术,希望你们能在这篇文章中找到些有用的东西。个人水平有限,如果文章有错误还请指出,在留言区一起交流。 我想大家肯定都或多或少的看过各种“策略模式”的讲解、布道等等,这篇文章就是来好好“澄清”一下策略模式,并尝试回答以下的问题: 1. 策略模式是如何优化业务逻辑代码结构的? 2. 杀鸡焉用宰牛刀?就是几个if else场景我需要用到策略模式?! 3. 有没有什么更好的代码结构来实现策略模式
- 下一篇
在 Python 中,三个关于可哈希不可不知的问题
云栖号资讯:【点击查看更多行业资讯】在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 作为一种通用的编程语言,Python 为不同的用户场景提供了一系列内置的数据结构。 当你学习 Python 基础知识的时候,你可能在某些地方看到有提及可哈希。例如,你可能会看到 dict 中的键需要是可哈希的(请参见下面代码片段中的一个小示例)。 在另一个例子中,它提到了 set 中的元素需要是可哈希的。 >>> # 一个正确的字典声明 >>> good_dict = {"a": 1, "b": 2} >>> >>> # 一个错误的字典声明 >>> failed_dict = {["a"]: 1, ["b"]: 2} Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unhashable type: 'list' 你可能会想知道 —— 可哈希到底是什么意思?哪些对...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- Windows10,CentOS7,CentOS8安装Nodejs环境
- CentOS8编译安装MySQL8.0.19
- CentOS6,CentOS7官方镜像安装Oracle11G
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题