本节书摘来自异步社区《Python编程初学者指南》一书中的第1章,第1.5节,作者[美]Michael Dawson,王金兰 译,更多章节内容可以访问云栖社区“异步社区”公众号查看。
Python自带一个名叫IDLE的集成开发环境。“开发环境”指的是一组能让程序编写工作变得更加轻松的工具。读者可以将其看作是一个用于编程的文字处理器,但它能做的事情可不止是编写、保存、编辑那么简单。IDLE提供了两种工作模式:交互模式(interactive mode)和脚本模式(script mode)。
终于到实际动手的时间了。最简单的方式是以交互模式启动Python。在该模式中,读者可以告诉Python要做什么,然后它就会立即给出响应。
1.编写第一个程序
点击开始菜单,然后依次点击“所有程序”、“Python 3.1”、“IDLE (Python GUI)”,这样就启动了一个交互式会话。读者应该会在屏幕上看到一个类似于图1.4的东西。
这个窗口叫作Python Shell。在命令提示符(>>>)那里输入print("Game Over")并按下Enter键。解释器就会在屏幕上显示如下信息:
Game Over
此时,第一个Python程序就写出来了。是不是感觉到自己已经是一名真正的程序员了(虽然还需要学习很多东西,但谁又不是呢)?
2.使用print函数
再看一下刚才写的那行代码,即print("Game Over")。多么简单,完全不需要了解什么编程的知识,就能够猜出它的作用。这就是Python,它非常简洁明了。当读者知道如何用Python编写更复杂的程序时,就会更加明显地感觉到这一点。
print()函数用于显示文本(就是在那对圆括号中用引号括起来的那些东西)。如果圆括号中没有任何东西的话,就会输出一个空行。
Python是大小写敏感的。一般来说,函数名是小写的。因此,print("Game Over")是对的,而Print("Game Over")和PRINT("Game Over")则是不对的。
学习行话
作为一名程序员,要时不时地把一些只有程序员才懂的稀奇古怪的词挂在嘴边才像个样子。函数(function)就像是一个能够执行某种特殊任务的迷你小程序。print()函数的任务就是显示一个值(或一组值)。通过函数的名称以及紧跟其后的一对圆括号即可让其开始工作,也就是调用(call),比如在交互模式下输入print("Game Over")。有时可以给函数提供(也叫作传参(pass))一些需要用到的值。这些值(也叫作参数(argument))要放在圆括号里面。在这第一个程序中,向print()函数传递了参数“Game Over”(这个函数就是用它来显示Game Over消息的)。
Python函数还会向调用它的那段程序反馈一些信息(也就是返回(return)。这些值称为返回值(return value)。有关返回值的知识将在第2章中进行讲解。
在这个例子中,传给print()函数的值“Game Over”是一个字符串(string)。它指的其实就是一组字符(跟键盘上的那些差不多)序列。“字符串”貌似是一个很怪的名字(“文本”或“文字”可能会更容易理解一点),但它其实是源于“文本是一串或一组字符”观点。严格来讲,“Game Over”是一个字符串字面量(literal),因为它在字面上就是一组构成单词的字符。
输入给解释器的代码行也被称为语句(statement)。在英语中,一个statement指的是一个“完整的意思”。在Python中,一条语句则是一条“完整的指令”,它是可以执行的。每个程序中都含有许许多多的语句。
现在可以告诉别人自己写过一些Python代码了。代码(code)指的是一段编程语句,也可以被当成一个动词来用,表示编程活动。例如,可以说,整个晚上都在一边吃着Hot Cheetos,喝着激浪,一边发疯似的编程。
3.生成错误
计算机是一个字符一个字符地获取信息的。如果拼错了函数名(哪怕只是一个字母),计算机就不会明白用户想要干什么。例如,在交互提示符那里,如果输入primt("Game Over"),解释器就会给出下面这样的响应:
Traceback (most recent call last):
File "", line 1, in
primt("Game Over")
NameError: name 'primt' is not defined
翻译成人类语言的话,解释器其实说的就是“你说什么?”错误消息中的关键行是NameError: name 'primt' is not defined。这条消息表示的是解释器不认识primt。对人类来说,当然可以忽略掉这种拼写错误并正确理解其含义。而计算机则没这么宽宏大量。好在只需修正错误的拼写即可解决这类型的编程错误(也就是bug)。
4.理解语法高亮显示
可能读者已经注意到了,显示在屏幕上的单词的颜色是有区别的(书上自然是看不出来的)。这就叫语法高亮(syntax highlighting),它能帮用户从视觉感官上快速理解所输入的内容。用在字体上的这些颜色是有规矩的。Python语言中的特殊单词(比如print)会被显示为紫色;字符串(比如Game Over)会被显示为绿色;输出信息(也就是解释器针对你所输入的程序而显示的结果)则会被显示为蓝色。在编写比较大的程序时,这种彩色显示方案能让用户扫一眼代码即可轻松发现其中的错误。
交互模式能让用户即刻得到反馈。这是很不错的事情,因为可以看到结果。但如果想创建一个程序并将其保存起来以便今后还可以再执行的话,它就不那么合适了。幸运的是,Python的IDLE还提供了一个脚本模式。在该模式下,可以编写、编辑、加载以及保存程序。它就好像是一个用于代码的文字处理器。事实上,确实可以用上一些类似的功能,比如查找和替换、剪切和粘贴等。
1.编写你的第一个程序(再来一次)
脚本模式的窗口可以在交互模式窗口中打开(点击File菜单,然后点击New Window即可)。这时就会出现一个像图1.5那样的新窗口。
在这个新的脚本窗口中,输入print("Game Over")并按下Enter键。什么变化也没有!这是因为现在正处于脚本模式。用户要做的是编写一长串需要计算机稍后再执行的语句。保存好这个程序之后,就可以运行了。
2.保存并运行你的程序
依次点击File、Save As,即可保存程序。为这个程序起名为game_over.py。为了以后能更方便的找到它,把它保存到桌面上。
务必要以.py扩展名保存写好的程序。这样才能让其他应用程序(包括IDLE)认出这些文件是Python程序。
只需依次点击Run、Run Module,即可运行这个Game Over程序。然后,交互模式窗口就会把程序的结果显示出来。这里的运行结果如图1.6所示。
注意看一下,交互窗口中还显示着之前的文字。刚才在交互模式下输入的语句(print ("Game Over"))及其执行结果(消息“Game Over”)还都在那里。在那些东西下面是一条restart消息,再下面就是来自脚本模式的程序的执行结果了:Game Over。
要想通过IDLE执行程序,先要将它保存一下才行。
交互模式对于快速检验一些小想法是很不错的,而脚本模式则适合于编写一些今后可以运行的程序。合理运用这两种模式才是最佳的编程方式。
即使在编程的时候只需要使用脚本模式,但仍然需要一直开着一个交互窗口。因为在脚本模式中编程时,会时不时地进到交互窗口中测试某个想法或刚刚编写的函数是不是对的。
脚本窗口是生产最终产品的地方,交互窗口则相当于用来试验的草稿本。把它们结合起来使用才能更快地编写出更好的程序。