Python程序的基本单元是文件,每个文件就是独立的一个最小的Python程序。
01用PythonIDLE创建文件
下面的动图显示了如何使用PythonIDLE在Python安装目录下创建一个test.py文件:
PythonIDLE创建文件
02Python程序文件的扩展名
Python程序文件有.py、.pyw和.pyc三种常见的扩展名。
其中.py和.pyw是个纯文本文件,可以用记事本打开看到源码,.pyc是Python的中间字节码文件,用记事本打开大部分内容都显示为乱码。.pyc文件可以加快Python程序的运行速度。
用鼠标左键双击这些文件时,.py默认用python.exe调用运行,.pyw以pythonw.exe调用运行。其中python.exe和后缀w(表示Windows窗口)的pythonw.exe是Python的解释器程序,都位于Python安装目录下。
一般情况下,使用.py作为扩展名即可。
03特殊的Python程序文件——Python库
并不是所有Python程序文件都是可以直接运行的,有些可能只是定义了供其他程序使用的通用性功能,比如函数和类,这种程序文件称为库(lib)文件。
单个库文件称为模块(module)。
多个库文件可以组织在一个文件夹中,这个文件夹称为包(package)。每个包在运行之后,会自动生成__pycache__文件夹,里面有自动生成的与.py等源程序基本名相同的.pyc文件。
04Python程序文件基本结构——语句
每个Python程序文件都由语句构成。语句则由流程控制命令、变量、常量、运算符、函数等组成。
一般情况下,一条语句独占一行。这是推荐做法。也可以用分号隔开,将多条语句写在同一行上。下面是个实例:
但这种做法是不推荐的,它使程序难以阅读。
另外,也可以使用\将一条较长的语句分写在多行上。
在使用圆括号、方括号、花括号时,语句可以直接分写在多行上,下面是个示例:
有些复合语句可以占据多行。称为语句块,语句块的第一行使用冒号结尾,比如if判断、while循环、def函数方法声明以及class类定义语句都是如此,下面是一个示例:
复合语句的具体用法将在以后详细介绍。
05Python特有的语法——缩进
Python语言与其他语言的最大区别在于,Python使用缩进来表示语句块。在其他语言中,任意的缩进并不会导致程序无法运行,缩进的不同仅仅只是编程风格问题,但在Python中,缩进是语法问题,不一致的缩进会导致程序无法运行。这是初学者最容易犯的错误之一。网上的代码直接复制粘贴时很可能因为缩进不同而不能运行。
代码的层次关系是通过同样数量的空格或制表符缩进体现的。同一语句块的代码行必须严格左对齐(左边有同样多的空格或同样多的制表符,或者混合使用空格或制表符),如果不严格遵守这个规则,同一组的代码就可能被当成另一个组,甚至会导致语法错误。
下面的是一个混合使用空格和制表符的示例,第2行和第3行前都有4个空格和一个制表符(Tab键),它可以正常运行:
标准的编程规范是使用空格、每级缩进4个空格为宜。PythonIDLE和PyCharm等IDE中,按Tab键会自动转换为4个空格。
“对一个初次使用空白字符作为代码块分界的人来说,遇到的第一个问题是:缩进多大宽度才合适?两个太少,六到八个又太多,因此我们推荐使用四个空格宽度。需要说明一点,不同的文本编辑器中制表符代表的空白宽度不一,如果你的代码要跨平台应用,或者会被不同的编辑器读写,建议你不要使用制表符。使用空格或制表符这两种风格都得到了Python创始人GuidovanRossum的支持,并被收录到Python代码风格指南文档。”
Python程序使用缩进表示代码,不仅使程序更为简短(不再需要像C、C++等语言一样额外的大括号了),也更易为阅读(C、C++等语言的缩进不是强制的,导致会出现一些缩进混乱的代码。)你可以从下面C语言混乱大赛冠*作品中可以感受到缩进滥用极致的后果,很少有人能够读懂它(它的功能是计算圆周率):
Python的缩进可以有效解决悬挂else(dangling-else)问题,在C等语言中,当语句块只有一句时,大括号是可以省略的,当if语句后面跟着两个语句时(即使它们的缩进不一样),无论条件是否满足,第2个语句始终会执行。“这种问题很难调试,不知道困惑了多少程序员。”
“最后一点,由于Python只使用缩进方式表达代码块逻辑,因此“神圣的大括号战争”永远不会发生在Python身上。C、C++和Java语言中,开始大括号可以在第一行的尾部,也可以在第二行的头部,也可以在第二行空几格后开始,这就造成不同的人选择不同的风格,于是你就会看到大括号战争的场景了。”
06特殊的Python语句——注释语句
注释语句是一种特殊的语句。
在Python中,以#号(国内常称井号,不过可能被鄙视,英文Sharp)开头的语句表示注释,解释器运行程序时会忽略注释,编译后生成的程序会删除注释。
注释的主要功能是为了方便程序代码的阅读与理解,推荐使用合理的注释,不滥用也不少用。给代码加上功能说明和相关背景环境信息是良好的注释风格。下面是一个注释语句功能的简单示例:
井号引导的注释也可以出现在一行的末尾:
另外,在Python中,程序文件开头的第一个字符串,以及类、方法、函数内部的第一个字符串均被视为注释。下面是示例:
下面是程序的运行效果图:
字符串注释
上例程序中使用的三个包围字符序列表示字符串。
07Python程序的执行顺序
运行Python程序时,从文件的第一行开始运行,即从上到下,然后直到文件的末尾。
这和将程序一次性读入内存一起执行的语言有所不同,考虑下面的程序:
它可以正确运行,输出“调用了函数”,如果将它们的顺序调换,就会出错了,下面是调换后的样子:
它会产生运行时错误:
NameError:namefisnotdefined
这是关于Python程序执行顺序中最容易产生的错误。
08结语——致读者
首先感谢您的阅读,这段教程之外的文字对你、我和百度、甚至整个人类社会都比较重要,但是绝大多数人都并不知道这一点,所以,我觉得有必要直接写出来。
您可能是自己主动搜索“Python教程:第1篇……”找到的此文,也可能是百家号APP主动推荐给你的,不管如何,您一定是具有学习的精神才点击阅读此文的,您也许现在已经或者将要成为业界中人,您也可以感知到此类教程文章的写作难度,这需要花费很多的精力与时间,也需要很多精巧的构思与布局,有所甄别与取舍。
所以我诚恳的希望您能给我一点支持,这个支持仅仅只是需要一个点赞即可,当然,如果能够评论转发也是很好的。
点赞、评论、转发、收藏、分享这些都叫作互动,百度服务器的机器是根据互动率来判断一篇文章是否有价值的,如果价值高,它就会推荐给更多的读者,如果价值低,那么它就会雪藏,甚至删除。有展现,就会有阅读,有阅读,文章作者就能获得收益,这些收益是百度给的,百度则从广告商那么获取利益。
大家都应该听说过蝴蝶效应,您可以做第一只扇动翅膀的蝴蝶,剩下的就交给机器算法。作者有收益才能给读者更多的更好的作品。所以,您的点赞对你我、对百度都是有利的。不过大多数人都并不知道这一点,对于您喜爱的事物,一定要主动表达支持,对讨厌的事物要主动表达厌恶,这样您才会像磁石一样,让美好的事物向您奔涌而来。
09往期回顾
如果您的是第一次阅读本系列教程,建议从第1篇开始,本教程由浅入深系统性的介绍Python编程语言,如果有文章感到理解困难,可以从开头开始看起。
如果还有不懂的,可以在评论区留言,我会根据留言来决定行文风格与信息密度。
以下是已发布的文章列表:
Python教程:第1篇Python教程综述
Python教程:第2篇Python编程语言简介
Python教程:第3篇安装Python开发环境
Python教程:第4篇了解Python自带的开发环境IDLE