- 零基础学Python(升级版)
- 明日科技编著
- 3051字
- 2024-05-14 10:52:19
2.1 Python语法特点
学习Python需要了解它的语法特点,如注释规则、代码缩进、编码规范等。下面将详细介绍Python的这些语法特点。
2.1.1 注释
视频讲解:资源包\Video\02\2.1.1 注释.mp4
![](https://epubservercos.yuewen.com/6FB438/29142694207411306/epubprivate/OEBPS/Images/47212_32_1.jpg?sign=1739460035-wyVe3719jDgBlm3hKSDyvJTQFkwPRY6D-0-ffa671d12aede38c3ab146fcc9667ee4)
在手机卖场中的手机价格标签,对手机的品牌、型号、内存大小、价格等信息进行说明,如图2.1所示。在程序中,注释就是对代码的解释和说明,如同价格标签一样,让他人了解代码实现的功能,从而帮助程序员更好地阅读代码。注释的内容将被Python解释器忽略,并不会在执行结果中体现出来。
![](https://epubservercos.yuewen.com/6FB438/29142694207411306/epubprivate/OEBPS/Images/47212_32_2.jpg?sign=1739460035-BLFJaLWVLhAxeiSIYJh6fxIilkxojHd0-0-9cc4d1744d2746f00ab1e704af4f721b)
图2.1 手机的价格标签相当于注释
在Python中,通常包括3种类型的注释,分别是单行注释、多行注释和文件编码声明注释。这些注释在IDLE中的效果如图2.2所示。
![](https://epubservercos.yuewen.com/6FB438/29142694207411306/epubprivate/OEBPS/Images/47212_32_3.jpg?sign=1739460035-f8fXT1ho2Y99m6zCkqaI5ZZpyB1rrN6A-0-f582a36ddfde9cb0e459bbff9260a37e)
图2.2 Python中的注释
1.单行注释
在Python中,使用“#”作为单行注释的符号。从符号“#”开始直到换行为止,“#”后面所有的内容都将作为注释的内容,并被Python编译器忽略。
语法如下:
![](https://epubservercos.yuewen.com/6FB438/29142694207411306/epubprivate/OEBPS/Images/47212_32_4.jpg?sign=1739460035-mLUlvz4yWB2m104HzwIDhNbXsflsTU8d-0-8d15150e15369aa6f4bb9fd18857c703)
单行注释可以放在要注释代码的前一行,也可以放在要注释代码的右侧。例如,下面的两种注释形式都是正确的。
第一种形式:
![](https://epubservercos.yuewen.com/6FB438/29142694207411306/epubprivate/OEBPS/Images/47212_33_1.jpg?sign=1739460035-V3ihMWzSOeS6GgOQrRi48PYJUbzlfQQB-0-8e30ca385a78b2be38dd4a13b2ca8c7b)
第二种形式:
![](https://epubservercos.yuewen.com/6FB438/29142694207411306/epubprivate/OEBPS/Images/47212_33_2.jpg?sign=1739460035-yUJL9egdWobbbz6tcUG2PzqLeBgi7JBx-0-6d53cd04ccfb5770a6527b72fa7b1627)
上面两种形式的运行结果是相同的,如图2.3所示。
![](https://epubservercos.yuewen.com/6FB438/29142694207411306/epubprivate/OEBPS/Images/47212_33_3.jpg?sign=1739460035-JEtzvNVAJrVTNTPhU5m2DLDsubA5ikim-0-c269683ab2beffedb5377cd35c4a2453)
图2.3 运行结果
说明
在添加注释时,一定要有意义,即注释能充分解释代码的功能及用途。例如,图2.4所示的注释就是冗余的注释。如果将其修改为如图2.5所示形式,就能清楚地知道代码的用途了。
![](https://epubservercos.yuewen.com/6FB438/29142694207411306/epubprivate/OEBPS/Images/47212_33_4.jpg?sign=1739460035-RC2aNVRRVTPmxgjeIDXs0lO7GMPgOstb-0-93c631bcf69e98b4e80a24c65665655e)
图2.4 冗余的注释
![](https://epubservercos.yuewen.com/6FB438/29142694207411306/epubprivate/OEBPS/Images/47212_33_5.jpg?sign=1739460035-5dQtwBFhts7HYmBQQhsfz7doIgHjaF9u-0-78aff0ed65dcbe3c0f269828dd44369a)
图2.5 推荐的注释
说明
注释可以出现在代码的任意位置,但是不能分隔关键字和标识符。例如,下面的代码注释是错误的:
![](https://epubservercos.yuewen.com/6FB438/29142694207411306/epubprivate/OEBPS/Images/47212_33_6.jpg?sign=1739460035-wXbiwWd1RsTdr8y61mSqU0S0E0kMq7Kg-0-d39b4a5e11d0bef5999d569d7858f28f)
多学两招
注释除了可以解释代码的功能及用途,也可以用于临时关掉不想执行的代码。在IDLE开发环境中,通过选择主菜单中的“Format”→“Comment Out Region”菜单项(快捷键<Alt+3>),可将选中的代码注释掉;通过选择主菜单中的“Format”→“Uncomment Region”菜单项(快捷键<Alt+4>),则取消注释。
2.多行注释
在Python中,并没有一个单独的多行注释标记,而是将包含在一对三引号('''……'''或者"""……""")之间,并且不属于任何语句的内容视为注释,这样的代码将被解释器忽略。由于这样的代码可以分为多行编写,所以也称为多行注释。
语法格式如下:
![](https://epubservercos.yuewen.com/6FB438/29142694207411306/epubprivate/OEBPS/Images/47212_33_7.jpg?sign=1739460035-HISUyFLSNukSZNEvWczDZnsNFHBVWAmT-0-673f0ea812dfee6068ccc15de4335287)
或者
![](https://epubservercos.yuewen.com/6FB438/29142694207411306/epubprivate/OEBPS/Images/47212_34_1.jpg?sign=1739460035-xIp2JWP1pHGrVSSi6EPvIFIt0JbnXatu-0-e8af38146428f6fc9e6cabcd54f6c9f7)
多行注释通常用来为Python文件、模块、类或者函数等添加版权、功能说明等信息。例如,下面的代码使用多行注释为demo.py文件添加版权、功能说明及修改日志等信息:
![](https://epubservercos.yuewen.com/6FB438/29142694207411306/epubprivate/OEBPS/Images/47212_34_2.jpg?sign=1739460035-gAbHM1iWoZSDM98KqinKe1a5uysMvqlo-0-3fe6bd3111e3c25a64540f3adabc4d8d)
注意
在Python中,三引号('''……'''或者"""……""")是字符串定界符。如果三引号作为语句的一部分出现,就不是注释,而是字符串,这一点要注意区分。例如,图2.6所示的代码为多行注释,图2.7所示的代码为字符串。
![](https://epubservercos.yuewen.com/6FB438/29142694207411306/epubprivate/OEBPS/Images/47212_34_3.jpg?sign=1739460035-PyvpJ3vbaIqxpi04mZB4wTMw8BrVUicZ-0-22272c23467f858d91680e1e4ae0f19d)
图2.6 三引号内的内容为多行注释
![](https://epubservercos.yuewen.com/6FB438/29142694207411306/epubprivate/OEBPS/Images/47212_34_4.jpg?sign=1739460035-yiDce2c6Qv1lgnsbiDPsqNFmjKqenhe2-0-585940550507374de4d648cc66de4955)
图2.7 三引号内的内容为字符串
3.文件编码声明注释
在Python 3中,默认采用的文件编码是UTF-8。这种编码支持世界上大多数语言的字符,也包括中文。如果不想使用默认编码,则需要在文件的第一行声明文件的编码,也就是需要使用文件编码声明注释。
语法格式如下:
![](https://epubservercos.yuewen.com/6FB438/29142694207411306/epubprivate/OEBPS/Images/47212_34_5.jpg?sign=1739460035-Z9nGMWoiSn2j6z3bnDrsMgPwSoKcNmWi-0-5784aafbbac2d8e95ba88c95eb2d4892)
或者
![](https://epubservercos.yuewen.com/6FB438/29142694207411306/epubprivate/OEBPS/Images/47212_34_6.jpg?sign=1739460035-YwQkzouRiHXf7HIXHksQYK2LKCRKAlaP-0-55ad4ff2215083e9f6a0e8c8e3d736cd)
在上面的语法中,“编码”为文件所使用的字符编码类型,如果采用GBK编码,则设置为gbk或cp936。
例如,指定编码为GBK,可以使用下面的文件编码声明注释:
![](https://epubservercos.yuewen.com/6FB438/29142694207411306/epubprivate/OEBPS/Images/47212_34_7.jpg?sign=1739460035-r0BElNM2fnP7xd6SZVa1KLwRjItUX5fZ-0-7acf6b9484b35d6af3ead542019e8368)
注意
在上面的代码中,“-*-”没有特殊的作用,只是为了美观才加上的。所以上面的代码也可以使用“#coding:gbk”代替。
另外,下面的代码也是正确的文件编码声明注释:
![](https://epubservercos.yuewen.com/6FB438/29142694207411306/epubprivate/OEBPS/Images/47212_35_1.jpg?sign=1739460035-DuSvZSdocw2xPXHrXTIdmD9o4zc62fLI-0-56b4c8173ad42876863ac5a3b5f67154)
2.1.2 代码缩进
![](https://epubservercos.yuewen.com/6FB438/29142694207411306/epubprivate/OEBPS/Images/47212_35_2.jpg?sign=1739460035-hSVUIIPwFsHkxkM3OMmzY44NKk0VEq48-0-65de8224a103863118350e37ab749881)
视频讲解:资源包\Video\02\2.1.2 代码缩进.mp4
Python不像其他程序设计语言(如Java或者C语言)采用大括号“{}”分隔代码块,而是采用代码缩进和冒号“:”区分代码之间的层次。
说明
缩进可以使用空格或者Tab键实现。其中,使用空格时,通常情况下采用4个空格作为一个缩进量;而使用Tab键时,则采用一个Tab键作为一个缩进量。通常情况下,建议采用空格进行缩进。
在Python中,对于类定义、函数定义、流程控制语句、异常处理语句等,行尾的冒号和下一行的缩进表示一个代码块的开始,而缩进结束则表示一个代码块的结束。
例如,下面代码中的缩进为正确的缩进:
![](https://epubservercos.yuewen.com/6FB438/29142694207411306/epubprivate/OEBPS/Images/47212_35_3.jpg?sign=1739460035-63MLAKnzMO0EF7h1aNogRRZcRjGfbyNq-0-41d1d5fa5628043c9f58c5672f66c5c4)
Python对代码缩进要求非常严格,同一级别的代码块的缩进量必须相同。如果不采用合理的代码缩进,将抛出SyntaxError异常。例如,代码中有的缩进量是4个空格,还有的是3个空格,就会出现SyntaxError错误,如图2.8所示。
![](https://epubservercos.yuewen.com/6FB438/29142694207411306/epubprivate/OEBPS/Images/47212_35_4.jpg?sign=1739460035-jngHZaGJZ1ANLv1pw2x4qw3hBicQB2Q4-0-230022d9ad74e9ecec5e7036c20126c1)
图2.8 缩进量不同导致的SyntaxError错误
在IDLE开发环境中,一般以4个空格作为基本缩进量位。不过也可以选择“Options”→“Configure IDLE”菜单项,在打开的“Settings”对话框(如图2.9所示)的“Windows”选项卡中修改基本缩进量。
![](https://epubservercos.yuewen.com/6FB438/29142694207411306/epubprivate/OEBPS/Images/47212_36_1.jpg?sign=1739460035-H95HDmRyoikilvhdBwHxDMpAOjhy1LTx-0-a192b6b171c239960f2623640224ce2e)
图2.9 修改基本缩进量
多学两招
在IDLE开发环境的文件窗口中,可以通过选择主菜单中的“Format”→“Indent Region”菜单项(快捷键<Ctrl+]>),将选中的代码缩进(向右移动指定的缩进量),也可通过选择主菜单中的“Format”→“Dedent Region”菜单项(快捷键<Ctrl+[>),对代码进行反缩进(向左移动指定的缩进量)。
2.1.3 编码规范
视频讲解:资源包\Video\02\2.1.3 编码规范.mp4
![](https://epubservercos.yuewen.com/6FB438/29142694207411306/epubprivate/OEBPS/Images/47212_36_2.jpg?sign=1739460035-CsZFCk4gx5uBhDcNyHTBpoQqH90Jn8jW-0-08f9f9c38c9fe43aff852222df7ab22b)
下面给出两段实现同样功能的代码,如图2.10所示。
![](https://epubservercos.yuewen.com/6FB438/29142694207411306/epubprivate/OEBPS/Images/47212_36_3.jpg?sign=1739460035-qJBmFwjOaK87p9IPYez5SxHoLfJ9znSz-0-8f57144ce5fb78e278002f7d3db78894)
图2.10 两段功能相同的Python代码
在图2.10中,右侧的代码段看上去比左侧的代码段更加规整,阅读起来也会比较轻松、畅快,这是一种最基本的代码编写规范。遵循一定的代码编写规则和命名规范可以使代码更加规范化,对代码的理解与维护都会起到至关重要的作用。
本节将对Python代码的编写规则及命名规范进行介绍。
1.编写规则
Python采用PEP 8作为编码规范,其中PEP是Python Enhancement Proposal(Python增强建议书)的缩写,8表示版本号。PEP 8是Python代码的样式指南。下面给出PEP 8编码规范中的一些应该严格遵守的条目。
☑ 每个import语句只导入一个模块,尽量避免一次导入多个模块。如图2.11所示为推荐写法,而图2.12所示的代码为不推荐的写法。
![](https://epubservercos.yuewen.com/6FB438/29142694207411306/epubprivate/OEBPS/Images/47212_37_1.jpg?sign=1739460035-ozoELopXR7kiQjJeFUEIM1BpfblzPshN-0-55def4fb70b3152537cd6f7e28b98ad0)
图2.11 推荐的写法
![](https://epubservercos.yuewen.com/6FB438/29142694207411306/epubprivate/OEBPS/Images/47212_37_2.jpg?sign=1739460035-4RcbP6lwR5igz8N924pLkAQiSplQDkIl-0-f0542625bc569931ce42d1d4e6c491cc)
图2.12 不推荐的写法
☑ 不要在行尾添加分号“;”,也不要用分号将两条命令放在同一行。图2.13所示代码为不规范的写法。
![](https://epubservercos.yuewen.com/6FB438/29142694207411306/epubprivate/OEBPS/Images/47212_37_3.jpg?sign=1739460035-RIuh5eQDdGdAFEjP0Rd1XllAycJ2s5Ei-0-7949ed9ccd7c0c9e75edc62866f409e3)
图2.13 不规范写法
☑ 建议每行不超过80个字符,如果超过,则建议使用小括号“( )”将多行内容隐式连接,而不推荐使用反斜杠“\”进行连接。例如,如果一个字符串文本不能在一行中完全显示,那么可以使用小括号“( )”将其分行显示,代码如下:
![](https://epubservercos.yuewen.com/6FB438/29142694207411306/epubprivate/OEBPS/Images/47212_37_4.jpg?sign=1739460035-0Tj6IArQWzfcMPHxrlgNDiWfqbJeboxR-0-9414348b5b8727737cfb47c6b86bb525)
以下通过反斜杠“\”进行连接的做法是不推荐使用的:
![](https://epubservercos.yuewen.com/6FB438/29142694207411306/epubprivate/OEBPS/Images/47212_37_5.jpg?sign=1739460035-9WHYFuuecZsrRGJRJEJPn1oXk3J9BvSS-0-bdd82ce51db8a439ef39c0bf7f0f158f)
不过以下两种情况除外:
➢ 导入模块的语句过长。
➢ 注释里的URL。
☑ 使用必要的空行可以提升代码的可读性。一般在顶级定义(如函数或者类的定义)之间空两行,而在方法定义之间空一行。另外,在用于分隔某些功能的位置也可以空一行。
☑ 通常情况下,运算符两侧、函数参数之间、“,”两侧建议使用空格进行分隔。
☑ 应该避免在循环中使用“+”和“+=”运算符累加字符串。这是因为字符串是不可变的,这样做会创建不必要的临时对象。推荐将每个子字符串加入列表,然后在循环结束后使用join()方法连接列表。
☑ 适当使用异常处理结构提高程序的容错性,但不能过多地依赖异常处理结构,适当的显式判断还是必要的。
说明
在编写Python程序时,建议严格遵循PEP 8编码规范。完整的Python编码规范请参考PEP 8。
2.命名规范
命名规范在编写代码中起到很重要的作用,虽然不遵循命名规范程序也可以运行,但是遵循命名规范可以更加直观地了解代码所代表的含义。本节将介绍Python中常用的一些命名规范。
☑ 模块名尽量短小,并且全部使用小写字母,可以使用下画线分隔多个字母。例如,game_main、game_register、bmiexponent都是推荐使用的模块名称。
☑ 包名尽量短小,并且全部使用小写字母,不推荐使用下画线。例如,com.mingrisoft、com.mr、com.mr.book都是推荐使用的包名称,而com_mingrisoft则是不推荐的。
☑ 类名采用单词首字母大写形式(即Pascal风格)。例如,定义一个借书类,可以命名为BorrowBook。
☑ 模块内部的类采用下画线“_”+Pascal风格的类名组成。例如,在BorrowBook类中的内部类,可以使用_BorrowBook命名。
☑ 函数、类的属性和方法的命名规则同模块类似,也全部使用小写字母,多个字母间用下画线“_”分隔。
☑ 常量命名时全部使用大写字母,可以使用下画线。
☑ 使用单下画线“_”开头的模块变量或者函数是受保护的,在使用from×××import*语句从模块中导入时,这些变量或者函数不能被导入。
☑ 使用双下画线“__”开头的实例变量或方法是类私有的。