1.13 程序实战:你好世界
不少打算从事程序开发的人找不到入门之法,所谓难者不会,概因找不到好老师细心教你。在写出第1个Python程序hello world之前,读者必须按照1.1节中的内容对Python解释器进行安装。这里以Windows环境来进行程序的编写。
1.13.1 第1个Python程序
第1个Python程序为向屏幕输出字符串"hello world",程序代码如下。
# __author__ = 薯条老师 def main(): print("hello world") if __name__ == "__main__": main()
1.13.2 选择一个代码编辑器
编写程序之前,得有个代码编辑器。常用的编辑器主要有Notepad++和PyCharm,前者是一款轻量工具,后者是一款IDE工具,包含了更加丰富的功能,稍显笨重。下面分别教大家下载和安装Notepad++和PyCharm。
● Notepad++
Notepad++是 Windows操作系统下的一个文本编辑器,有完整的中文版界面。Notepad++支持语法高亮显示,不仅可以用来制作一般的纯文字说明文件,还十分适合编写计算机程序代码。读者可到Notepad++官方网站的下载页面中下载该编辑器,下载后直接双击文件安装即可。Notepad++界面如图1-16所示。
图1-16
● 社区版PyCharm
PyCharm是专为Python开发的IDE工具,提供了诸多功能,以帮助程序员提升开发效率,如调试、语法高亮、代码跳转、自动完成、智能提示等。PyCharm分为商业版和社区版,商业版是收费的,社区版面向Python社区的学习人员,其提供的功能与商业版并无太大区别。一般来说,社区版即可满足程序员的开发需求。
读者可到JetBrains公司的官方网站下载PyCharm。单击Community下的DOWNLOAD按钮即可下载社区版PyCharm,如图1-17所示。下载完毕后,双击安装即可。PyCharm界面如图1-18所示。
图1-17
图1-18
1.13.3 运行程序
从一开始学编程时,就得有一个目录组织的概念。清晰的目录结构有助于对项目的整体维护,这是作为一个程序员最基本的素养,读者须谨记在心。
(1)在D盘创建python-learning目录,打开这个目录,创建chapter1目录,然后在chapter1目录中创建一个名为 helloworld.py 的文件,如图1-19所示。
图1-19
(2)双击打开helloworld.py文件,原样输入以下代码,红色箭头处示意必须有空格缩进(一般缩进4个空格),如图1-20所示。
图1-20
实例代码
# __author__ = 薯条老师 def main(): print("hello world") if __name__ == "__main__": main()
笔者有话说
注意,代码中的__name__和__main__两侧是两根下画线。写完这个程序后,想让它运行,务必按照以下步骤来执行这个Python程序。
(1)按Windows键,输入cmd命令,按回车键,进入Windows的命令行界面。
(2)输入d: 再按回车键,以切换到D盘。
(3)输入cd python-learning,进入创建的python-learning目录。
(4)在python-learning目录中执行python helloworld.py命令。
按照以上4步操作以后,若看到hello world输出在终端,则表示程序执行成功。笔者会在1.13.4小节对程序源代码进行逐行解释。
编程小知识
Windows系统使用盘符来对磁盘进行标识,如C盘的盘符C:、D盘的盘符D:。要在命令行中进行磁盘的切换,可直接输入对应的盘符,然后按回车键,例如,从C盘切换到D盘,命令为d:。在磁盘内部进行切换使用cd命令加对应的路径,例如,在D盘中切换到python-learning目录,命令为cd python-learning。
1.13.4 代码逐行讲解
下面用代码编辑器打开上一小节创建的helloworld.py,并对代码进行逐行讲解。
# __author__ = 薯条老师
这里的#字符在Python中是用来作注释的,是单行注释,多行注释使用3个英文的单引号'或双引号"将待注释的内容括起来,举例如下。
# 单行注释 ''' 多行 注释 ''' """ 多行 注释 """
注释的内容会被Python解释器忽略。有良好编程习惯的程序员通常都会写注释,加注释是为了提供一些代码之外的信息,其他人通过这些信息可以知道程序的编写日期、程序的作者、函数的功能、复杂的逻辑描述,等等。
当解释器读到注释字符时, 会略过接下来的内容,直到读到下一个注释字符为止,也就是说解释器只翻译除注释之外的内容。
实例代码
def main(): print("hello world")
此处的def实为英语单词define的简写,define有“下定义,规定”的意思,是一个动词,在Python中使用def来定义函数。函数包含函数头和函数体,函数头又包含函数名和参数列表,函数体是用来实现函数功能的代码块。
知识超链接
对函数定义还不是很熟悉的读者,可以复习1.5~1.8节中的变量、表达式、语句和函数等内容。
在我们定义的这个函数中,函数名为main,函数体中执行了内置的print()函数,读者可以将main自行改写为其他函数名来进行测试。
print()是Python的内置函数。所谓内置函数,就是在Python中预先写好的函数,可直接调用。print("hello world") 语句的功能即为执行print()函数,将hello world输出到屏幕上。
我们也可以将数字或其他数据类型输出到屏幕上,如 print(666)、print(2019.888) 等,读者可以自行改写 helloworld.py文件,然后测试输出其他类型的数据。
笔者会在后面对函数单独进行讲解,初学者需要做的是按照书中的内容反复练习,直到熟练为止,如果没有达到熟练的程度,那就不要开始学习下一节内容。
实例代码
if __name__ == "__main__": main() """ 注意:__name__ 与 __main__前后都是双下画线 """
__name__是Python中的一个系统变量,保存了当前模块的完整名称,“==”是逻辑运算符,用于判断两侧的量是否相等。
这一段代码在逻辑上表示如果系统变量__name__的值等于"__main__",就执行main()这个函数。
main()函数已经在前面定义过,这个函数的函数体为执行print()函数,给print()函数传递"hello world"字符串参数,print()函数会把 hello world输出到屏幕上。
能否不加 if__name__ == "__main__":呢?
答案是肯定的,读者可以自行将这一行删掉,再将main()左移到行首。1.12节中已对模块进行简单介绍,在Python中每个.py文件都可以作为一个模块,请读者牢记以下知识点。
如果当前模块是直接执行的,__name__的值就为"__main__";如果当前模块被导入其他模块,__name__的值就为模块名字,模块名字是创建的文件名(不包含.py)。
1.13.5 课后习题
(1)尝试改写main()函数名为其他的函数名。
(2)改写helloworld.py,输出10个阿拉伯数字到屏幕上。