Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >零基础学编程031:Python与其它语言最不同的一条语法规则

零基础学编程031:Python与其它语言最不同的一条语法规则

作者头像
申龙斌
发布于 2018-03-06 02:59:40
发布于 2018-03-06 02:59:40
2.1K00
代码可运行
举报
运行总次数:0
代码可运行

有C或JAVA其它编程语言基础的人可能对Python中的这条语法规则最不适应:Python中的缩进是有语法含义的,它用来表示一个代码块(code block)。这里说的代码块是指函数定义条件语句循环语句等等。缩进就是指每行代码最前面的几个空格或TAB制表符,通常是与上一行的冒号一起使用的,例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 为了清楚地表示缩进,我把空格都用.表示
def price(stock) :
....url = 'http://hq.sinajs.cn/list=' + stock
....with req.urlopen(url) as f :
........hq = f.read().decode('GBK')
........v = hq.split(',')
........return v[1]

假设用C#语言来写,大概是这样:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 这段代码只是一个示例,无法通过编译
double price(string stock) {
    string url = 'http://hq.sinajs.cn/list=' + stock;
    using(WebRequest f = new WebRequest(url)) {
        string hq = f.read().decode('GBK');
        string []v = hq.split(',');
        return v[1];
    }
}

大部分编程语言都是通过花括号"{"、"}"这类符号来标记块的开始和结束,花括号内部的代码并不需要缩进,缩进只是为了让程序员更容易读,更容易看懂代码的逻辑结构。在C#里,刚才的代码也可以这样写:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 这段代码只是一个示例,没有缩进的代码难以阅读
double price(string stock) {
string url = 'http://hq.sinajs.cn/list=' + stock;
using(WebRequest f = new WebRequest(url)) {
string hq = f.read().decode('GBK'); 
string []v = hq.split(','); return v[1];
}  }

Indent缩进、Deindent反缩进

而Python把这些花括号也给省了,缩进是一条强制性的语法规则,如果缩进不正确,则代码会报错!

来看看《18零基础学编程018:条件语句》中的那段代码,如果写成这样:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from turtle import * 
for i in range(365) : 
    forward(1.01 ** i)
    left(9)
    if(i%7==0) : 
    stamp()

则会提示:

There is an error (expected an indented block) at line 6, column 9.

indent就是向右缩进的意思,而deindent(或dedent)是向左缩进的意思,向左缩进是我编的名字,我也不知道deindent的正规中文翻译是什么。

在IDLE集成环境中,还有专门的快捷键ctrl + ] 用于缩进,而ctrl + [ 则是相反的操作。

不要使用制表符TAB?

按TAB键也可以产生缩进的效果,这一点在Word排版时也会用到,但在Python中要小心了,不同的文本编辑器对TAB的解释可能不一致,有些默认是8个字符,有些是4个字符,有些则是对齐到8的倍数列上,如果你的代码中混用TAB和空格,则会出现一些奇怪的错误。

现在的许多编辑器中都增加了一项设置,可以自动将TAB保存为多个空格,比如IDLE、Notepad++(注意不是Windows中自带的记事本,多个两个加号,功能强大多了),当你按TAB键时,自动产生的是4个空格。

在这种编辑器中写代码就方便多了,你按一次TAB可以,按四次空格也行,效果一样。像Notepad++中还提供了细细的对齐线等功能,还可以突出显示空格和制表符,让你看得更清楚。

Python编码规范

Python语言本身对于缩进的空格数没有规定,但为了让程序员们互相之间容易沟通,Python社区对代码的规范性提出了许多建议,如果你遵守这些建议,则与全世界的程序员们基本上保持了一致的习惯。网址:https://www.python.org/dev/peps/pep-0008/

关于缩进这一部分,规范中规定:

  • 缩进用4个空格
  • 一条比较长的语句也可以用缩进分成多行,详细的规定请阅读英文原文
  • Python 3中已经禁止TAB和空格混用

悬挂else问题

在其它编程语言中,有可能会遇到这类的悬挂else问题,即末尾的else语句与2个if语句中哪一个配对?有经验的程序员会要求所有的语句都要有花括号。

在Python中的这样一段代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if (条件1) :
    if (条件2) :
        fun1();
else :
    fun2();

在C#或JAVA中会写成这样:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if (条件1) {
    if (条件2) {
        fun1();
    }
}
else {
    fun2();
}

Python的缩进规则让代码显得更简洁,根本不会出现悬挂else的问题,你的缩进表明了你的else与哪个if相匹配。

当然Python中的缩进也有一个缺点,如果你从网页上复制python代码,有些网页上的代码排版本来就很乱,如果原始的python代码缩进乱了,则无法重新格式化。

小结:

  • 选用支持将TAB自动转换为4个空格的编辑器或集成开发环境
  • 保持TAB为4个空格的默认编辑器设置
  • 从其它地方粘贴的代码如果出现错误,可以用对齐线辅助检查
  • 遵守Python的编码规范,方便与全世界的其他程序员沟通

--- END ---

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-03-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 申龙斌的程序人生 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
零基础学编程022:函数的世界
通过《零基础学编程021:获取股票实时行情数据》的学习,我们已经可以取出“谷歌”股票的开盘价,今天我们要取出GAFATA共6支股票的开盘价。 先回顾上次的代码: import urllib.request as req with req.urlopen('http://hq.sinajs.cn/list=gb_goog') as f : hq = f.read().decode('GBK') v = hq.split(',') print(v[1]) 要获取6支股票行情,那就先找
申龙斌
2018/03/06
7620
零基础学编程022:函数的世界
零基础学编程028:面向对象编程OOP
在《零基础学编程021:获取股票实时行情数据》一节中,我们想获取6支股票的行情数据,在《零基础学编程022:函数的世界》里我们能够把重复性的代码封装为一个函数price(),以后获得不同的股票行情只需调用函数即可,回顾一下这个函数的代码: def price(stockCode) : url = 'http://hq.sinajs.cn/list=' + stockCode with req.urlopen(url) as f : hq = f.read().decode('
申龙斌
2018/03/06
8760
零基础学编程028:面向对象编程OOP
零基础学编程023:用with实现优雅地释放资源
在《零基础学编程022:函数的世界》中我们写了一个函数,通过访问新浪的实时行情服务,得到股票的开盘价。 import urllib.request as req def price(stock) : url = 'http://hq.sinajs.cn/list=' + stock with req.urlopen(url) as f : hq = f.read().decode('GBK') v = hq.split(',') retur
申龙斌
2018/03/06
1K0
零基础学编程027:站在巨人的肩膀上
在《零基础学编程021:获取股票实时行情数据》这一节里,我们利用urllib抓取新浪财经中的股票数据,可以取出谷歌股票的开盘价,回顾一下代码: import urllib.request as req with req.urlopen('http://hq.sinajs.cn/list=gb_goog') as f : hq = f.read().decode('GBK') v = hq.split(',') print(v[1]) 但我们很多时候并不需要也不应该从零开始构建一个程
申龙斌
2018/03/06
8790
零基础学编程027:站在巨人的肩膀上
零基础学编程021:获取股票实时行情数据
春节期间重写了“笑来投资演练程序1.0版”这个程序,可以每个月自动更新几支股票的行情数据。程序的功能不复杂,但是编程新手想实现它仍有相当的困难。为了短时间内完成主要功能,我使用了最熟悉的C#编程语言,
申龙斌
2018/03/06
2.8K0
零基础学编程021:获取股票实时行情数据
Python 零基础入门
Python 是一种易于学习又功能强大的编程语言。它提供了高效的高级数据结构,还有简单有效的面向对象编程。Python 优雅的语法和动态类型,以及解释型语言的本质,使它成为多数平台上写脚本和快速开发应用的理想语言。
iOSDevLog
2019/05/22
1.1K0
Python 零基础入门
Python的缩进规则「建议收藏」
Python中的缩进(Indentation)决定了代码的作用域范围。这一点和传统的c/c++有很大的不同(传统的c/c++使用花括号花括号{}符决定作用域的范围;python使用缩进空格来表示作用域的范围,相同缩进行的代码是处于同一范围)。
全栈程序员站长
2022/07/25
8220
Python编程:从入门到实践(选记)「建议收藏」
本文参考《 Python 编程:从入门到实践》一书,作者: [ 美 ] Eric Matthes
全栈程序员站长
2022/09/08
6.6K0
Python编程:从入门到实践(选记)「建议收藏」
python缩进格式错误的是_python 缩进错误,
要求严2113格的代码缩进是python语法的一大特色,就像C语言5261家族(C、C++、Java、C#等等)中的花括4102号一1653样重要,在大多数场合还有必要。在很多代码规范里面也都有要求代码书写按照一定的规则进行换行和代码缩进,但是这些要求只是纯粹是方便人(程序员)来阅读、使用或修改的,对于编译器或者解释器而言,完全是视而不见的。但是对Python解释器而言,每行代码前的缩进都有语法和逻辑上的意义。Python的这个特性,也经常在Python使用者和非Python使用者中引起争论。
全栈程序员站长
2022/07/28
2.3K0
python中的缩进快捷键_python如何缩进
以缩进来表示代码块,是python的特色,对养成好的编程习有非常大的帮助,那么python如何缩进呢?一起来了解下吧:
程序员鑫港
2022/01/12
2.9K0
Python3 | 练气期,入门精简基础语法!
前面我们已经尝试了Python程序的几种运行方式,并运行了第一个Hello World的Python程序,并且列举了 Python2 与 Python3 的部分差异!
全栈工程师修炼指南
2024/07/16
1560
Python3 | 练气期,入门精简基础语法!
JavaScript企业级编程规范(3)-换行与缩进-空格约束-语句格式-常见技巧
换行按照以下约束进行行缩进控制:函数参数换行。换行后的第一个参数的首字母应该和函数第一个参数的首字母左对齐,如下所示
itclanCoder
2020/10/28
1.7K0
JavaScript企业级编程规范(3)-换行与缩进-空格约束-语句格式-常见技巧
[Python从零到壹] 二.语法基础之条件语句、循环语句和函数
欢迎大家来到“Python从零到壹”,在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界。所有文章都将结合案例、代码和作者的经验讲解,真心想把自己近十年的编程经验分享给大家,希望对您有所帮助,文章中不足之处也请海涵。
Eastmount
2021/02/20
9080
Python 进阶指南(编程轻松进阶):三、使用 Black 工具来格式化代码
本章向您介绍 Black,它是一个代码格式化工具,可以自动将您的源代码格式化成一致的、可读的样式,而不改变您的程序的功能。Black 很有用,因为在文本编辑器或 IDE 中手动格式化代码很繁琐。您将首先了解使用 Black 格式化代码的合理性。然后,您将学习如何安装、使用和定制该工具。
ApacheCN_飞龙
2023/04/09
2.2K0
python缩进错误提示(python缩进讲解)
学习 python 与其他语言最大的区别就是,python 的代码块不使用大括号 {} 来控制类,函数以及其他逻辑判断。 python 最具特色的就是用缩进来写模块。 缩进…有时候,你觉得两行代码的缩进是一样的,但编译器仍然报错。 这可能是因为一个地方使用空格来缩进,而另一个地方使用了tab键来缩进。 碰到这种情况要统一…
全栈程序员站长
2022/07/25
4.3K0
你一定遇到过Python中的无效语法:SyntaxError---常见原因以及解决办法
Python以其简单的语法而闻名。然而,当您第一次学习Python时,或者当您具有另一种编程语言的坚实背景时,您可能会遇到一些Python不允许的事情。如果您在尝试运行Python代码时收到过SyntaxError错误,那么本指南可以帮助您。在本教程中,您将看到Python中常见的无效语法示例,并学习如何解决这个问题。
HuangWeiAI
2020/02/13
29.1K0
如何用PEP 8编写漂亮的Python代码
Pep 8的存在是为了提高Python代码的可读性。但为什么可读性如此重要呢?为什么编写可读的代码是Python语言的指导原则之一?
Python知识大全
2020/02/13
1K0
Python的代码风格
随着你编写的程序越来越长,有必要了解一些代码格式设置约定。请花时间让你的代码尽可能易于阅读;让代码易于阅读有助于你掌握程序是做什么的,也可以帮助他人理解你编写的代码。为确保所有人编写的代码结构都大致一致。Python程序员都遵循一些格式设置约定。学会编写整洁的Python后,就能明白他人编写Python代码的整体结构------只要他们和你遵循相同的指南。
狼啸风云
2019/11/03
1.4K0
PEP 8 —Python代码风格指南(一)
原文:PEP 8 – Style Guide for Python Code PEP:8 题目:Python代码风格指南 作者:Guido van Rossum, Barry Warsaw ,
chaibubble
2018/01/02
1.1K0
Python入门5 if语句
在上面的代码中,我在每个if语句后进行了换行,同时在每个print前面加了4个空格
用户11104668
2024/05/02
1310
相关推荐
零基础学编程022:函数的世界
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验