Python应用开发技术
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.1.3 Python基础语法

1.1.3.1 Python程序格式

1)Python的标识符

在开发过程中,程序员往往需要在程序中表示一些事物,或者定义一些符号或名称,这些事物的表示、符号以及名称等被称为标识符。在Python语言中,标识符是由字母、数字以及下画线组成的,其命名方式需要遵循下述规则:

(1)标识符由字母、数字以及下画线组成,不能以数字开头。例如,hao123就是一个合法的标识符,而hao-123或者123hao都是不合法的标识符。

(2)标识符对字母的大小写是敏感的。例如,jason和Jason是两个不同的标识符。

(3)标识符不允许与Python语言中的关键字重名。例如,import就不能用于标识符。

此外,如果使用以下画线开头的标识符,则要特别注意该标识符与Python语言中的一些默认接口访问方式的定义是否重名。例如,以单下画线开头的_foo在Python语言中表示不能直接访问的类属性,只有通过类提供的接口才能进行访问,而且不能使用import的方式导入类属性。此外,以双下画线开头的接口(如__foo)和以双下画线开头和结尾的接口(如__foo__)都具有特殊含义,前者代表类的私有成员,后者代表Python语言中函数方法专用的标识,如__init__()代表类的构造函数。

2)行和缩进

Python语言与C、Java等其他语言的最大区别是,Python语言的代码块不使用大括号{}。例如,类、函数以及其他逻辑判断等。Python 最具特色的就是用缩进来写模块。缩进的数量是可变的,所有代码块语句必须包含相同的缩进数量,必须严格遵守。

当代码块语句未严格缩进时,在运行前会被检查出错误,如图1.26所示。

图1.26 代码块语句为严格缩进

当PyCharm中出现红色波浪线时,表示发生了错误。如果此时将鼠标光标放到红色波浪线上,则会看到PyCharm给出的错误提示,如图1.27所示。

图1.27 PyCharm给出的错误提示

图1.27中的错误提示为“Unindent does not match any outer indentation level”,表示图中第9行语句和第11行语句使用的缩进方式不一致(图1.27中,第9行语句使用的是Tab键缩进,第11行语句使用的是空格缩进),将缩进方式改为一致即可。Python语言对缩进格式要求非常严格,因此,在Python程序的代码块中必须使用相同的缩进方式,不建议在编写代码时使用Tab键缩进,也不要混合使用Tab键缩进和空格缩进。

3)语句换行

Python程序的每行语句长度建议不要超过80个字符,对于过长的语句代码可以换行。可以使用多行连接符“\”将一行语句分为多行,例如:

利用Python会对小括号、中括号或大括号中的语句进行隐式连接的特性,开发者无须使用多行连接符“\”就可以实现语句换行,例如:

4)Python的引号

Python的引号常被用于定义字符串,单引号(')、双引号(")、三引号('''或""")均可用于定义字符串,但必须成对使用引号,即开始的引号与结束的引号必须是相同类型的,要么都是单引号,要么都是双引号或者三引号。三引号还可以定义多行文本,常用于定义文档字符串。如果仅仅使用三引号来定义字符串,而未对定义的字符串进行赋值,则定义的字符串会被当成程序中的注释信息。例如:

5)Python的注释

为了让程序代码易于后续维护或者便于二次开发,程序开发人员通常都会对其中的关键性语句进行功能性的说明。Python语言中的单行注释符是“#”,以“#”为开头的所有后续字符都会被当成程序代码的功能性说明文字,而不是真正要运行的语句。例如,下面代码中的两个注释是不会被Python解释器当成程序语句的。如果使用“#”进行单行注释,建议“#”与其后的说明文字之间留一个空格,“#”和程序语句之间至少要有两个空格。

上述代码在PyCharm中的运行结果如图1.28所示。

图1.28 Python注释运行结果

注释可以放在语句或表达式的后面,例如

Python语言中多行注释可使用三引号(3个单引号或3个双引号),例如:

6)Python的空行

在Python程序中,空行也是属于程序代码的一个组成部分,用来表示一段新代码的开始。例如,在定义函数或类的方法时,可用空行将其与其他代码分开。通常,在函数和类的入口之间也会用一行空行分隔,以突出函数和类入口的开始。这里需要注意的是,空行的使用与代码缩进不同,空行并不是强制性的语法结构,在程序代码中不使用空行也不会出错。使用空行的目的是分隔两段不同功能或含义的代码,便于日后的程序版本迭代、维护及代码重构。

7)Python的输入

Python的输入语句因Python版本的不同有较大的差异。在Python 2.x中,raw_input()函数用来输入内容,如下面的代码所示。在Python 3.x中,不再使用raw_input()函数,取而代之的是input()函数。

在上述的代码中,“\n”是转义字符,用于实现换行,即代码运行后会输出提示信息,即双引号中的字符串内容,输出完毕后换行等待输入内容。若直接按下回车键则完成输入,若按其他键则显示该按键的内容。在Python 3.x的交互工作模式下,在按下回车键完成输入后,Python会把所输入的内容以字符串的格式回显一次,如图1.29所示。

图1.29 在按下回车键后将输入的内容以字符串的格式回显一次

如果在PyCharm中输入内容,则一定要在input()的小括号中设定一个字符串,用于用户输入内容时的提示,因为PyCharm会因为鼠标聚焦而看不到输入光标,如果要显示输入光标,则需要单击一次鼠标。在 PyCharm 输入等待状态时,左下角的“■”(停止)按钮会变为红色,表示程序未结束。如果要强制终止程序,则可按下“■”按钮。此外,PyCharm 与上面的交互工作模式不同,输入内容是不会被回显的。

在PyCharm中,输入内容前的状态如图1.30所示,输入内容后的状态如图1.31所示。

图1.30 输入内容前的状态

图1.31 输入内容后的状态

8)在同一行中显示多条语句

Python 不但可以逐行解析运行每一条语句,还可以解析运行在同一行中的多条语句。如果要在同一行中解析运行多条语句,则需要使用“;”分开每条语句,例如:

在PyCharm中,在同一行中解析运行多条语句的效果如图1.32所示,图中第1行语句的运行效果与第3、4行语句的运行效果是一样的。

图1.32 在同一行中解析运行多条语句的结果

9)Python的输出

Python是使用print()函数输出内容的,print()函数会在输出小括号中的内容后自动换行。如果要进行不换行的连续输出,则不同的Python版本有不同的命令格式。在Python 2.x中,需要在输出内容的末尾加上逗号,如希望输出x的值后继续输入y的值,可使用语句print(x,)实现;在Python3.x 中,单纯地在末尾加上逗号是无效的,还需要加上“end=''''”,即 print (x,end=""),表示输出行末尾没有任何特殊符号(换行符)。例如:

上述代码在PyCharm中的运行结果如图1.33所示。

图1.33 换行输出和不换行输出的运行结果

此外,这里还要注意“print(x,end=);print(y)”的运行结果和“print(x,y)”的运行结果是不同的,后者是通过print()函数实现多个变量输出的,此时print()函数会自动用空格将这些变量间隔开。

1.1.3.2 Python的编程方式

1)交互式编程

交互式编程是在交互工作模式下进行编程的方式,是一种便捷的程序编写方式,它不需要创建脚本文件,通过Python解释器即可解析运行代码。在linux平台中,只需要在命令行工作模式下输入“python”即可进入交互工作模式,提示如下:

在Window平台中安装Python时,会同时安装交互式编程的启动菜单,本书中的交互式编程的启动菜单是“Python 3.8(64-bit)”,如图1.34所示。

图1.34 “Python 3.8(64-bit)”

只需单击“Python 3.8(64-bit)”菜单,即可直接进入交互工作模式,并在提示符“>>>”后输入代码:

按回车键后即可看到上述代码的运行结果,如图1.35所示。

图1.35 代码运行结果

2)脚本式编程

编写Python脚本程序后调用Python解释器编译运行Python脚本,是一种常见的Python程序开发方式。这种方式的优点是编程过程不会受到编译器运行反馈的影响,可以在编写若干条语句、完成一定功能后再统一运行所有的程序。

这里以一个简单的Python脚本程序为例进行说明。首先通过记事本将文本内容保存为以.py为扩展名的文件HelloWorld.py,或者通过记事本新建一个名为HelloWorld.py的文件,然后将以下的代码复制到HelloWorld.py文件中。

由于在安装Python时已经设置了Python解释器的Path变量,因此可以直接在命令行工作模式下使用以下命令运行程序:

也可以先编写系统可运行的脚本,再调用Python解释器运行Python脚本程序HelloWorld.py。在Windows平台下的系统可运行的脚本autopython.bat如下所示:

系统脚本的运行方式如图1.36所示。

图1.36 系统脚本的运行方式

脚本运行结果如图1.37所示。

图1.37 脚本运行结果