目录
1 前言
2 何为标识符?
3 何为保留关键字?
4 什么是代码行 ?
5 Python独有的规则 缩进
6 注释,大佬都很重视它
7 编码表
尝试编写Python代码前,这些非常基础的代码规则是值得认真理解的,这些规则能让老手避免一些容易犯的错误、让新手能更快更好的做到“听、说、读、写”。有些规则适用于大部分编程语言,有的是Python独有的。
这些规则要比我们在支付宝集各种福要简单得态度多。这些规则它们是:
标识符
保留关键字
行
缩进
注释
编码
在我们理解这些基础游戏规则时,我们不用去纠结为什么规则要这样设定。只要知道规则本身就好。我们先来看一段简单的代码,看看我们的代码是如何由这 6 个元素组合在一起的。
上面的代码中,哪些是标识符?:只要符合下面这两条规则,就是标识符。
第一个字符必须是字母表中字母或下划线 “_”。
标识符的其他的部分由字母、数字和下划线组成。
在Python最新版本中,可以使用中文和非ASCII码(什么是ASCII,后面有解释)来做标识符。现在,我们把上面代码的标识符标记出来。
我们可以看出,标识符是我们编程语言的主要组成元素。不仅仅是Python,其他编程语言也是这样。我们可以联想一下,我们自己和周围任何事物他们都有一个“名字”,比如你叫什么?你正在做什么?你喜欢什么?等等。编程语言中的 标识符 ,和我们平常用于描述世界的“名字”是一样的,它们都代表着某些含义。
在上面的代码里,有一些标识符我们是可以任意发挥的。比如 text 这个标识符,我们可以将其统一修改成 text1,tex_t,wenzi等等。修改后我们程序依然可以健康的运行。
但有一些标识符可千万不能这样!假如我们把 if 这个关键词,统一修改成,ruguo。那么Pycharm马上会给出错误提示,如下图:
Pycharm会提示我们,在选择结构语句里,不理解 ruguo是个什么鬼。也就是说,在整个Python代码里,有一部分标识符,它有如下特点:
它不能乱来,比如 if ,不能写成 iff,只有写成 if ,python才认识。
这些不能乱来的标识符,通常都是用在特定的语法结构里的,比如选择,循环等等。
如果我们在语法结构外用这些特殊的标识符,也是不行的。比如一个变量起名为 if 。
拥有这些特点的标识符,就叫做保留标识符,或保留关键字,它们是让Python解释器看懂我们编写代码的基石。就像是英语有26个英文字母,这些字母就是英语里的保留关键字,26个字母构成了庞大的英语知识大厦,那么Python的这些保留关键字,构成了负责丰富的软件代码。
下图,我们把保留关键字标记出来。
要查看Python 的所有保留关键字,我们可以启动Python的交互器,然后输入下面代码,就可以看到。
这些关键字,分别如下:
False,None,Ture,__peg_parser__,and,as,assert,async,await,Break,class,continue,def,del,elif,else,except,finally,for,form,global,if,import,in,is,lambda,nonlocal,not,or,pass,raise,return,try,while,with,yield。
在Python里,每个保留关键字都有其特殊含义和用法,在后续教程里会为大家一一解释。我把这些单词一一罗列出来是想告诉大家,只要我们弄明白这些单词在Python里的作用,那么就可以用Python做任何事情,只有你想不到,没有你做不到。
所以说学会一门编程语言并不难,难的是寻找问题的解决方案,和知道从哪里开始入手解决问题。
上图最左边的就是代码行的标识,比如第六行代码,是 “text = text.lstrip()”。
还记得我们在上一篇教程里提到的代码顺序结构吗? 电脑执行代码就是按照顺序结构一行一行的来。代码行很好理解。曾经有一个小伙伴,问了很多人想问但不敢开口的问题。我能否把一堆代码都写在一行代码里?
答案是可以的,如下图:
只要我们合理的把之前换行的地方加上“;”(Python里也可以用“;”代表语句的结束,但Python自己并不支持这样的操作)就可以了。但这样做真的好吗?把代码写成一行有如下坏处:
不方便阅读
不方便定位问题
需要一个很宽的显示器
无论是Python,还是Java这些编程语言,都不鼓励把代码写成一行,除非你对你的同事和公司有很大的意见,或者你就是偏执的想去试试看(别问为什么我知道)。
我在实际的开发工作中,遇到更多的情况是一行代码太长了,我们想给它一个好的阅读体验,可以把这很长的一行代码分成几行来写,但对于Python来说,它还是一行。看如下截图:
还有一个小白特别好奇,但又不敢问的问题。为啥代码之间要空行?不空行难道不更节省行数吗?难道不是代码越少越好吗?(这是一个严重的误区)
确实,编程语言没有规定什么时候空行、什么时候不空行。
我们来看下图:
左边的代码是根据语义的逻辑来空行的,没有任何规则可言,就像我们写日记有段落一样。
右边是完全没有空行的。
是不是左边的代码读起来会更清晰一些? 我们来总结一下,空行的作用。
用空行来组织代码,让代码读起来更有代入感。
也让我们在理解代码的时候,更专注于一些 “逻辑块”。
在大部分开发语言里,缩进不是强制性的,它和上面的空行一样,用来让代码看上去更舒服。但在Python的世界里,缩进却是一个很重要,用来控制代码层级的东西。那什么是代码层级?
层级是一种看事物的视角!大部分的代码编写设计理念,都要用到这个概念,生活中也是。
举个例子:
上面是一辆杜卡迪的超跑(v4),我的梦想车子。在消费者眼里,这辆车是由两个半热熔轮子、一个邮箱、一个四缸的V字发动机,和一个骚气的红色涂装,这是消费者的视角。
若我们站在发动机设计师的视角,这台四缸V字发动机,又由气缸、电喷系统、火花塞、油泵等组成。若我们站在电喷系统设计师的视角来看,又可以看到更细致的东西。
软件开发项目也可以这样,从产品线,到产品,功能,到模块,到子模块,到类,到方法,到语句块,到具体的代码等等。
在所有的开发语言里面,也有这样的视角,不同的视角对于审视一个开发项目会有不同的帮助。这些视角送“大”到“小”分别是。软件、API、插件、包、文件、类、方法、代码块。
这些晦涩难懂的词语大家不用去想象它是个什么样的东西,后面我会帮助大家去理解,到哪个场景,再来理解这些词语,就会明朗很多。
在Python里,缩进就是用来控制代码块层级关系的,直接上代码:
红色框里,相比第一行代码,向右边缩进了四个空格,或者叫一个“Tab”。这是Python的最小缩进单位,少一个空格都不行。
第一行代码:def test(): 回车后,来个缩进,说明下面同样缩进的代码都属于 def text(),这里的def是函数,或者方法的关键字,用来定义打包的方法的。对于函数,方法的用法,背后的思想后面会为大家详细的介绍。这里的重点是理解缩进的用法。
在看黄色框里面代码,它是黄色框外,上一行代码缩进后的代码。意思就是说它是上一行代码的子代码块。同理在看绿色框里的代码。
Python通过缩进把一个代码文件里代码的层级关系给说明了,这样的做法很想我们在用word编写文档时,整理文档大纲一样。
在Pycharm里面,我们可以把子代码收起来,只看父级代码,就像我们有些时候看书,只看标题一样,能快速浏览书中的思想。
点击“-”好可以收起子代码。如下图。
在其他开发语言里面比如 Java,C++,C语言里,缩进是可以随便乱用的,它们的缩进只是为了让代码排版好看。在这些语言里要来控制代码的层级关系,用的是“{”,“}”,大括号这两个字符。
注释就是代码的旁白,用来说明代码的含义和构思的,是给其他开发人员看的,Python不会理会它们。在一些严格的软件公司里,经验丰富,负责的工程师在编写代码的时候,差不多5,6行代码就会写一个注释,这个注释说明这5,6行代码的含义。
注释的规则很简单,在一行代码的开头,写一个#号,后面紧跟注释的内容就行。注释虽然简单,但注释非常重要。
我自己写代码的时候,就要求自己写注释,这样可以避免自己写的代码时间长了自己看不懂的情况。下图标记出来的代码就是注释。
不同开发语言,注释的写法不一样,但都很容易理解。
不关注编码这个概念,会让很多程序员在寻找“乱码”这类BUG时候毫无头绪,我自己在工作中也是经历过了很多“折磨”才慢慢对编码这个东西充满了敬仰。
那什么是编码?
我们在用Python编写代码的时候要注意些什么事情?才不会被编码折磨?
首先编码它不是一个语法,或者游戏规则,它是一种比编程语言还“老”的东西。我们能在电脑屏幕上看到的东西,都和编码有关。
如果现在我们手里有一个硬盘和一个特殊的显微镜,那么我们可以通过这个显微镜看到硬盘里面存储的东西。它们都是一些逻辑开关,如果用0来代表关,那么1就代表开。这些数以亿计的逻辑开关,一个一个排布在一起就形成“01011010”。
目前,在计算机里,“00000000”代表“空格”,“01000110”代表大写的F。通过这些01010101来定义我们现实生活中用到的符号,这个过程就叫做编码。由这些编码规则组合起来形成的表,叫做《信息交换标准代码》。
第一个国际标准的《信息交换标准代码》叫做ASCII表,诞生于1967年,那时我爸刚刚14岁。好了知道了编码表后,那它对我们编程有什么影响?
最早的ASCII表里,字符交换信息没有中文,也就意味着那个时代的编程语言,不能处理中文。慢慢的随着我国自己推出了一个字符交换的中文标准GBK2312,这个表非常巨大,毕竟要对应那么多的汉子,这个表解决了在编程语言里处理中文的问题。
但其他语言怎么办?
于是一个国际统一的标准 UTF-8 诞生。简单理解,UFT-8可以包括我们人类能认知的99.9%的符号。
如果这些标准,我们一开始没有注意,比如我们在ASCII编码环境下使用中文,那么中文就会出现乱码。
又或者我们的编程语言是UTF-8。但我们对接的网络接口用的是GBK2312,那么同样会出现字符乱码的问题。所以在不同平台,不同设备,不同软件间,学程序的时候,就要注意这个编码环境。目前Python3默认支持的是 UTF-8 这种格式。
假如,我们要基于一个GBK2312编码格式的数据库编程,我们就要在Python3代码前加一个代码提示符,意思是告诉Python。我们想要在GBK2312这个环境下编写代码。如下图:
好了,Python代码最基本的编写规则就这些了,是不是很简单? 大部分编程语言的编写规则就是这些,学习一门开发语言其实就是学习它的规则,要学好一门开发语言就要弄明白规则背后的原理。
编程语言并不难,它只是一个基本的工具,掌握它你就会编程了,但要作为一个优秀的程序员,编程语言只是其中很小的一块知识结构,重要的是编程的思想、意识、方法,也是我们后面要介绍的重点,学习这些没有任何技巧,需要的是耐心。
下面的课程开始为大家介绍 Python基础编程的知识,同样它们也不难,比起支付宝集福的规则要简单太多。