1.3 Python程序基本编写方法
Python安装成功后,就可以用Python语言编写程序了。Python支持两种运行方式:交互式(命令行方式)和脚本式(源程序文件方式)。下面以Python的自带系统为例学习Python程序的基本编写和执行方法。
1.3.1 Python程序编写与执行
1.交互式(命令行方式)
进入Python交互式的方法有以下两种。
1)从命令行窗口启动Python。选择Windows开始菜单,在“搜索程序和文件”框中输入cmd〈Enter〉(〈Enter〉表示按〈Enter〉键,下同),启动命令行窗口,在命令行窗口中输入Python〈Enter〉,进入Python交互式解释器,如图1-9所示。此时用户可以在提示符>>>下输入Python命令或调用函数,以命令行方式交互式地使用Python解释器。
2)从Python程序组启动Python。选择Windows开始菜单下的Python程序组,如图1-7所示,单击其中的“Python 3.7(64-bit)”或“IDLE(Python 3.7 64-bit)”菜单项均可启动Python交互式解释器,如图1-10所示。
【例1-1】交互式使用Python,在屏幕上输出“Hello Python!”。
启动Python交互模式,在提示符>>>下直接输入Python命令即可,如下所示:
详细说明如下。
● 在提示符>>>下输入print("Hello Python!"),紧接着在下一行会输出字符串“Hello Python!”(注意:输出时并没有双引号)。
● print是指将括号里的字符串“Hello Python!”输出到屏幕上,而不是在打印机上输出。两个双引号中的内容表示一个完整的字符串,双引号本身不在屏幕上输出。
● 与C/C++、Java等程序设计语言必须以分号结束一行语句不同,Python语言中表示一行语句结束的分号一般省略,只有在一行添加多条语句时才使用。
2.脚本式(源程序文件方式)
在交互方式下输入Python代码虽然方便,但是这些语句不能保存,无法重复执行或留作将来使用。因此,Python提供源程序文件方式,用户可以使用记事本、集成开发工具(IDLE、PyCharm等)编写源代码,并将源程序保存成扩展名为“.py”的Python脚本,然后在Python的命令行方式下执行该脚本文件,同样可以得到运行结果。
例如,在Windows的命令提示符窗口(启动cmd)直接运行,如下所示:
其中,filename是源程序文件名。
【例1-2】编写程序并保存为脚本文件,文件名为“example1_2. py”。程序实现功能:在屏幕上分两行输出“Hello Python!”和“欢迎使用Python!”。
1)用记事本等文本编辑器(注意不能使用MS Word等字处理软件)编写程序源代码。文件以“example1_2. py”命名保存在“d:\python37”文件夹下,如图1-24所示。
启动命令提示符窗口运行该源程序文件,输入如下命令:
运行过程如图1-25所示。
图1-24 用记事本编写源程序示例
图1-25 Python源程序运行示例
详细说明如下。
● 文件中第1行“#example1_2.py”是注释行,第3行和第4行中“#”后面的文字也是注释。
● 文件中第2行“#encoding:UTF-8”(写成coding=UTF-8或coding:UTF-8均可)是设置字符编码为UTF-8编码格式。文本文件通常默认是ASCII码格式,如果文件中含有中文字符将会出现乱码现象,程序运行将会报错,因此,国际上采用Unicode编码将世界各国的语言编码(如我国的GB2312)都统一到这套编码中,解决了多语言混合文本中的乱码问题。UTF-8是一种Unicode可变长度字符编码方式,用1~6个字节编码Unicode字符,1个汉字占3个字节。
● 第3行和第4行是两条输出语句。
2)使用IDLE编写代码。启动Python自带的集成开发环境IDLE,选择菜单中的“File→New File”选项,打开文件编辑窗口,可以在该窗口中编写源程序代码,如图1-26所示。文件保存后按〈F5〉键或选择菜单中的“Run→Run Module”选项运行程序,运行结果如图1-27所示。
图1-26 Python IDLE编写源程序示例
图1-27 Python IDLE源程序运行示例
【例1-3】编写程序,程序实现功能:求两个数之和。
参考程序如下:
程序运行结果如下:
3.Python帮助
在Python中可以使用help()方法获取帮助信息。在IDLE的环境下获得Python帮助信息分为以下3种情况。
1)获取内置函数和类型的帮助信息。为获得某个内置函数的帮助信息,可以在提示符>>>后面直接输入help(对象名)。例如,想获得内置函数sum的帮助信息,在提示符后面输入help(sum),即可获得内置函数sum的帮助信息,如图1-28所示。
图1-28 Python内置函数sum帮助信息
2)获取模块中的成员函数信息。为获得某个模块中成员函数的帮助信息,需先导入该模块,然后输入help(模块名.对象名)。例如,想获得math模块中的fabs成员函数的帮助信息,需先导入math模块,然后输入help(math.fabs),即可获得该函数的帮助信息,如图1-29所示。
图1-29 math模块中fabs函数的帮助信息
3)获取整个模块的帮助信息。为获得整个模块的帮助信息,需先导入该模块,然后输入help(模块名)。例如,想获得math模块中所有的帮助信息,需先导入math模块,然后输入help(math),即可获取整个模块的帮助信息,如图1-30所示。
图1-30 整个math模块的帮助信息
另外,Python提供了非常完善的Python帮助文档,文档在Python安装目录的doc文件夹下,文件名为“python374.chm”,双击即可打开,如图1-31所示。
图1-31 Python的帮助文档
1.3.2 Python错误与调试
在程序开发过程中,出错在所难免,调试是一个不可缺少的重要环节。“三分编程七分调试”,说明程序调试工作量甚至比编程还要大很多。
1.Python错误
Python的错误通常分为语法错误和逻辑错误两类。
1)语法错误。语法错误是指不符合Python程序的语法规则,比如语句格式错和函数引用格式错等。Python解释器在程序执行过程中会检测出程序存在的语法错误,并指出出错的一行,在最先找到的错误位置做出标记。
例如,输出语句print中的双引号错写成中文双引号,解释器在运行中指出语法错误,即定义了无效的字符。如图1-32所示。
图1-32 Python运行出错示例
2)逻辑错误。逻辑错误是指用户编写的程序已经没有语法错误,可以运行,但运行却得不到所期望的结果(或正确的结果)或运行期间发生错误。
例如,编程目标是求两个数的和,语句应该是sum=a+b,但可能误写成sum=a-b,这是一种逻辑错误,程序可以运行但结果不正确。
另一种逻辑错误是程序语法没有错误,但运行期间可能发生错误。例如,若程序中有一条语句c=a/b,Python语法正确,但如果运行中b的取值为0时,将发生错误。这类程序运行期间检测到的错误通常称为异常(异常处理部分详见5.3节)。
2.Python调试
程序调试是指所编写的程序投入实际使用前,通过手工、编译或执行程序等方法进行测试,修正语法错误和逻辑错误的过程。
一般来说,程序出现语法错误相对比较容易查找和修正,但逻辑错误通常比较隐蔽,不容易发现,因此程序调试的难点主要是检测出程序的逻辑错误。根据测试时所发现的错误,逐步判断,找出出错的原因和具体的出错位置并进行修正。
Python调试方法主要有以下几种。
1)可以通过Python解释器查找和定位语法错误。
2)可以在Python程序的某些关键位置增加print语句直接显示变量的值,从而确定程序执行到此处是否出错。这种方法简单、直接,但比较麻烦,因为开发人员必须在所有可疑的地方都插入输出语句,程序调试完成后,必须将这些输出语句全部清除。
3)可以利用调试器(Debugger)调试程序以帮助程序员查找程序的逻辑错误。调试器的功能主要包括暂停程序执行、检查和修改变量、调用方法等,但调试器并不更改程序代码。程序员可以利用调试器分析被调试程序的数据,并监视程序的执行流程。IDLE和PyCharm等集成开发环境均提供了调试器来帮助开发人员查找逻辑错误。
IDLE调试器的基本流程如下。
● 启动Python IDLE,在Python 3.7.4 Shell窗口中选择“Debug→Debugger”菜单项,启动IDLE调试器Debug Control窗口,同时在Python 3.7.4 Shell窗口中将产生“[DEBUG ON]”标记,下一行是提示符>>>,如图1-33所示。
● 在Python 3.7.4 Shell窗口中选择“File→New File”或“File→Open”菜单项,启动Python脚本文件编辑窗口,并输入【例1-3】程序,如图1-34所示。
● 在图1-34所示窗口中选择“Run→Run Module”或按〈F5〉键执行代码,可以在Debug Control窗口查看变量值和运行结果等,如图1-35所示。
图1-33 启动调试器的Python 3.7.4 Shell窗口
图1-34 Python源文件编辑窗口
● 如果要退出调试器,可以再次选择“Debug→Debugger”,IDLE将关闭调试器,并在Python 3.7.4 Shell窗口中产生“[DEBUG OFF]”标记。
图1-35 Debug Control调试窗口
Debug Control调试工具可以完成各种调试跟踪功能,其主要功能如表1-1所示。
表1-1 Debug Control调试工具的主要功能
1.3.3 Python编码规范
Python非常重视代码的可读性,对代码的布局和排版有更加严格的要求。下面简要介绍Python对代码编写的一些要求和规范,建议用户在编写第一段代码时即遵循这些要求和规范,养成良好的编程习惯。
1)代码缩进。代码缩进是Python语法中的强制要求。Python源程序的代码之间的逻辑关系依赖于代码块的缩进。对于类定义、函数定义、选择结构、循环结构及异常处理结构,行尾的冒号及下一行的缩进表示一个代码块的开始,缩进结束则表示一个代码块的结束。同一个级别的代码块的缩进量必须相同。
【例1-4】编写程序,实现选择输出两个变量值之中的大数。
参考程序如下:
程序运行结果如下:
在IDLE开发环境中,基本缩进单位默认为4个空格,也可以自定义基本缩进量,选择“Options→Configure IDLE”选项,在弹出的Settings对话框的“Fonts/Tabs”选项卡中设置基本缩进量,如图1-36所示。
图1-36 IDLE环境中设置基本缩进量
2)适当的注释。注释是为增强代码可读性而添加的描述文字,对程序的执行没有任何影响。注释主要分为以下两类。
● 单行注释:程序中的单行注释采用“#”开头,可以从任意位置开始,既可以在语句行末尾,也可以独立成行。
● 多行注释:可以使用多个“#”开头进行多行注释,也可采用一对三引号将多行注释字符串括起来。
3)清晰的模块导入。导入模块时每个import语句导入一个模块,尽量避免一次导入多个模块。
4)代码过长折行处理。如果一行语句过长,可以考虑拆分成多个短一些的语句,以保证代码具有较好的可读性。也可以在行尾使用续行符“\”来表示下面紧接的一行仍属于当前语句,但一般建议使用圆括号来包含多行内容。
注意:注释行不能使用反斜线“\”续行。
5)必要的空格和空行。最好在每个类、函数定义和一段完整的功能代码之后增加一个空行,在运算符两侧各增加一个空格,以及在逗号后面增加一个空格等,以增强程序的可读性。
6)常量名中所有字母大写,由下画线连接各个单词,类名中首字母大写。