零基础学Python(txt+pdf+epub+mobi电子书下载)


发布时间:2020-06-28 02:45:29

点击下载

作者:张志强等

出版社:机械工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

零基础学Python

零基础学Python试读:

前言

作为最流行的脚本语言之一,Python具有内置的高级数据结构和简单有效的面向对象编程思想实现。同时,其语法简洁而清晰,类库丰富而强大,非常适合于进行快速原型开发。另外,Python可以运行在多种系统平台下,从而使得只需要编写一次代码,就可以在多个系统平台下都保持有同等的功能。

为了能够使广大读者既能够掌握Python语言的基础知识,又能够将Python语言应用于某个特定的领域(如Web开发),本书将全面介绍和Python相关的这些内容。在学习完本书之后,相信读者能够很好地掌握Python语言,同时可以使用Python语言进行实际项目的开发。本书特点

1.循序渐进,由浅入深

为了方便读者学习,本书首先让读者了解Python的历史和特点。通过具体的例子逐渐把读者带入Python的世界,掌握Python语言的基本要点以及基础类库、常用库和工具的使用。

2.技术全面,内容充实

本书在保证内容实用的前提下,详细介绍了Python语言的各个知识点。同时,本书所涉及的内容非常全面,无论从事什么行业的读者,都可以从本书中找到可应用Python于本行业的地方。

3.对比讲解,理解深刻

有很多读者具备Java的开发经验,因此本书注意结合Python与Java语法的异同点进行讲解。同时本书注意对Python中相似的函数和方法进行对比。通过对比讲解的方式,帮助读者解决一些疑难问题,加深读者对Python语法要点的理解。

4.分析原理,步骤清晰

每种编程语言都有自己独特的魅力。掌握一门技术首先需要理解原理,本书注意把握各个知识点的原理,总结实现的思路和步骤。读者可以根据具体步骤实现书中的例子,理论结合实践更利于学习。

5.代码完整,讲解详尽

对于书中的每个知识点都有一段示例代码,并对代码的关键点进行了注释说明。每段代码的后面都有详细的分析,同时给出了代码运行后的结果。读者可以参考运行结果阅读源程序,可以加深对程序的理解。本书内容

第1章:如果读者还是一个新手,可通过这一章了解Python能做什么,Python的特征和优势,逐渐步入Python的世界。

第2章:详细介绍了Python的语法知识,深入讲解了Python的编码规则、变量和常量的声明及使用、数据类型、运算符和表达式。通过本章的学习,读者能掌握Python编码的一些规范以及一些基本概念。

第3章:详细介绍了Python中的控制语句、循环语句以及一些习惯用法,结合示例讲解了Python结构化编程的要点。

第4章:介绍了Python的内置数据结构——元组、列表、字典和序列。根据使用习惯分别介绍了这些内置数据结构的特点以及区别。

第5章:讲解了Python中模块和函数的概念。重点介绍了Python的常用内置模块、函数的参数、递归函数、lambda函数、Generator函数等内容。

第6章:重点介绍了Python中字符串的处理,包括字符串的格式化、比较、合并、截取、查找、替换等。讲解了正则表达式的概念以及使用re模块处理正则表达式。

第7章:介绍了Python对文件的基本操作,包括文件的创建、读写、删除、复制、搜索、替换和比较。重点介绍了Python对目录遍历的实现,以及Python的流对象。

第8章:介绍了面向对象程序设计的要点,重点讲解了Python如何实现面向对象的特性,以及Python中的设计模式。

第9章:详细介绍了Python对异常的处理、异常的捕获和抛出、自定义异常等内容。讲解了如何使用IDLE和Easy Eclipse for Python调试Python程序。

第10章:介绍了Python的数据库编程,重点讲解了使用ODBC、DAO、ADO、Python专用模块连接数据库,以及Python的持久化。最后结合SQLite数据库的示例讲解了Python对数据库的操作。

第11章:介绍Python的GUI开发。主要介绍了当前Python中使用比较多的Tkinter和PyQT。

第12章:介绍了Python自带的GUI开发库Tkinter的基本组件及其使用方法,并给出每种组件的详细示例代码与图示。

第13章:介绍了Python的HTML应用。详细介绍了URL的解析以及HTML资源的获取,同时对CGI的使用和HTML文档的解析进行了介绍。

第14章:讲解了Python的XML操作,包括XML的各种内容实体。还对XML文档的两种处理方式SAX和DOM进行了详细的讲解。

第15章:对Python中常用的Web开发框架进行了介绍。在介绍了MVC模式的基础上,对Django框架进行了详细的讲解,包括基本使用方法和高级使用方法。

第16章:介绍了Python中的测试框架。主要讲解Python中两种测试框架:unittest和doctest。讲解的时候,都配以示例,以利于读者掌握。

第17章:介绍了Python中进程和线程的概念。主要的内容包括进程和线程的创建及管理等。同时,着重讲解了多线程环境下的数据同步机制。

第18章:介绍了Python的系统管理,其中主要讲解IPython的应用,不仅包括IPython的介绍,还包括其常见应用。

第19章:讲解了Python中和网络编程相关的内容,包括服务器端和客户端的通信。随后着重介绍了网络中的异步通信方式,最后对Twisted框架进行了介绍。

第20章:讲解了Python开发中常见的网络应用。主要包括文件传输、邮件的接收和发送、远程登录以及简单网络管理功能的实现。最后对使用Scapy分析网络数据进行了介绍。

第21章:讲解了Python图像处理,通过各种示例,读者能够迅速掌握相关知识点并用于实践。

第22章:介绍了Python语言的扩展和嵌入应用。这两种技术使得Python语言有了更进一步的发展。

第23章:介绍了Windows下的Python开发,主要介绍了组件对象模型。同时,使用示例来讲解Windows下的各种Python应用。适合读者

·Python爱好者

·大中专院校的学生

·社会培训班学生

·高等教育学校的学生

·系统管理员

·界面开发人员

·Web开发人员

·网络编程人员本书作者

本书由张志强、赵越编写,其中天津职业技术师范大学的张志强编写第1~12章,渤海大学的赵越编写第13~23章,全书最后由范林涛统稿。第一篇Python语言基础第1章进入Python的世界

Python是一种动态解释型的编程语言。Python简单易学、功能强大,支持面向对象、函数式编程。Python可以在Windows、UNIX等多个操作系统上使用,同时Python可以在Java、.NET等开发平台上使用,因此也被称为“胶水语言”。Python的简洁性、易用性使得开发过程变得简练,特别适用于快速应用开发。本章的知识点:

·Python的特征

·Python开发环境的配置

·Python程序的编写

·不同开发平台对Python的支持1.1 Python的由来

Python语言是由Guido van Rossum在1989年开发的,并最终于1991年初发表。Guido van Rossum曾是CWI公司的一员,使用解释性编程语言ABC开发应用程序,这种语言在软件开发上有许多局限性。由于他要完成系统管理方面的一些任务,需要获取Amoeba机操作系统所提供的系统调用能力。虽然可以设计Amoeba的专用语言实现这个任务,但是van Rossum计划设计一门更通用的程序设计语言。Python就此诞生了。

Python语言已经诞生20多年了,正逐渐发展为主流程序设计语言之一,目前在TIOBE编程语言排行榜中长期占据第八的位次。由于Python语言的动态性,程序解释执行的速度比编译型语言慢。但是随着Python语言的不断优化,一些诸如PyPy项目的不断发展,以及计算机硬件技术的不断发展,动态语言已经越来越受到工业领域的重视。其中的代表性语言有Python、Ruby、SmallTalk、Groovy等。

众所周知,Java是工业应用领域认可的开发语言。Java与C++相比使用更容易,内部结构也相对简单。而Python的语法特性使得程序设计变得更轻松,用Python能编写出比Java可读性更强的代码。随着Jython等解释器的出现,使得Python可以在Java虚拟机上运行。这样Python可以使用Java丰富的应用程序包。Python与读者熟知的JavaScript非常相似,都是解释执行,而且语法结构有很多相同的地方。JavaScript是浏览器端的客户脚本语言,而Python也可以用于Web方面的开发。

Python作为脚本式语言,吸收了Perl、Tcl等语言的优点,这使得Python具备Tcl的扩展性,同时又具备Perl的文本解析和匹配能力。Python与Lisp也有相似之处,Python可以实现函数式的编程模型。1.2 Python的特色

程序设计语言在不断发展,从最初的汇编语言到后来的C、Pascal语言,发展到现在的C++、Java等高级编程语言。程序设计的难度在不断减小,软件的开发和设计已经形成了一套标准,开发工作已经不再是复杂的任务。最初只能使用机器码编写代码,而现在可以使用具有良好调试功能的IDE环境编程。Python使用C语言开发,但是Python不再有C语言中的指针等复杂数据类型。Python的简洁性使得软件的代码大幅度地减少,开发任务进一步简化。程序员关注的重点不再是语法特性,而是程序所要实现的任务。Python语言有许多重要的特性,而且有的特性是富有创造性的。

1.面向对象的特性

面向对象的程序设计解决了结构化程序设计的复杂性,使得程序设计更贴近现实生活。结构化程序设计把数据和逻辑混合在一起,不便于程序的维护。面向对象的程序设计抽象出对象的行为和属性,把行为和属性分离开,但又合理地组织在一起。Python语言具有很强的面向对象特性,而且简化了面向对象的实现。它消除了保护类型、抽象类、接口等面向对象的元素,使得面向对象的概念更容易理解。

2.内置的数据结构

Python提供了一些内置的数据结构,这些数据结构实现了类似Java中集合类的功能。Python的数据结构包括元组、列表、字典、集合等。内置数据结构的出现简化了程序的设计。元组相当于“只读”的数组,列表可以作为可变长度的数组使用,字典相当于Java中的HashTable类型。内置数据结构的具体使用方法详见第4章。

3.简单性

Python语言的关键字比较少。它没有分号、begin、end等标记,代码块使用空格或制表键缩进的方式来分隔。Python的代码简洁、短小,易于阅读。Python简化了循环语句,即使程序结构很复杂也能快速读懂。详细信息请参考第2章的相关内容。

4.健壮性

Python提供了异常处理机制,能捕获程序的异常情况。此外Python的堆栈跟踪对象能够指出程序出错的位置和出错的原因。异常机制能够避免不安全退出的情况,同时能帮助程序员调试程序。详细信息请参考第9章的相关内容。

5.跨平台性

Python会先被编译为与平台相关的二进制代码,然后再解释执行。这种方式和Java类似,但Python的执行速度提高了。Python编写的应用程序可以运行在Windows、UNIX、Linux等不同的操作系统上。在一种操作系统上编写的Python代码只需做少量的修改,就可以移植到其他的操作系统上。

6.可扩展性

Python是采用C开发的语言,因此可以使用C扩展Python,可以给Python添加新的模块、新的类。同时Python可以嵌入C、C++语言开发的项目中,使程序具备脚本语言的特性。

7.动态性

Python与JavaScript、PHP、Perl等语言类似,它不需要另外声明变量,直接赋值即可创建一个新的变量。

8.强类型语言

Python的变量创建后会对应一种类型,它可根据赋值表达式的内容决定变量的类型。Python在内部建立了管理这些变量的机制,不同类型的变量需要类型转换。

9.应用广泛

Python语言应用于数据库、网络、图形图像、数学计算、Web开发、操作系统扩展等领域。有许多第三方库支持Python。例如,PIL库(目前已经不再维护,取而代之的有Pillow)用于图像处理、NumPy库用于数学计算、WxPython库用于GUI程序的设计、Django框架用于Web应用程序的开发等。1.3 第一个Python程序

Python的源代码文件以“py”作为后缀。下面编写一段简单的Python程序,创建一个名为hello.py的文件,用于输出字符串“hello world”。01 if __name__ == "__main__":02 print("hello world")【代码说明】

·第1行代码相当于C语言中的main()函数,是Python程序的入口。详细用法请参考第5章的相关内容。

·第2行代码使用print语句输出字符串“hello world”。

输出结果如下所示。hello world

Python的print语句用于输出字符串的内容,即把双引号中的内容输出到控制台。Python的输入、输出是通过“流”实现的,上述print语句把字符串的内容输出到标准输出流,即输出到控制台。流也可以把结果输出到文件、打印机等,关于流的详细用法请参考7.3节的内容。

Python程序的运行非常简单,命令格式如下所示。python python_file_path + python_file.py

其中python_file.py表示Python的源代码文件,python_file_path表示python_file.py所在的路径。在DOS窗口中输入如图1-1所示的命令,运行文件hello.py。图1-1 Python程序的运行

这种运行方式不够直观,而且不便于程序的调试。后面将介绍如何在编辑器EditPlus和开发工具PyCharm中运行Python程序。1.4 搭建开发环境

Python开发环境的安装和配置非常简单。Python可以在多个平台进行安装和开发,IPython是非常流行、强大而且易用的Python安装包。本节将介绍IPython的安装和Python交互式命令行的使用。1.4.1 Python的下载和安装

在UNIX系统上默认安装了Python,Python的可执行文件被安装在/usr/local/bin目录中,库文件被安装在/usr/local/python目录中。虽然系统默认安装了Python2与Python3两个版本,但是在终端中的Python默认为Python2,目前一般为Python2.7.5。要使用Python3则需要在终端中输入python3,或者修改默认的版本。而在Windows环境中,Python可以被安装到任何目录中。读者可以到官方网站www.python.org下载Python3.3,官方网站提供了Windows、UNIX等不同操作系统的Python安装软件。

用户也可以安装IPython交互式shell,比默认的终端好用很多,支持自动缩进,并且内置了很多有用的功能和函数。其官网地址为http://ipython.org。它可以在任何操作系统上使用。Windows用户在安装IPython前需要先安装Anaconda。Anaconda是一种安装管理的程序,使用它可以很方便地完成Python的升级等操作,并且其自带了非常多的Python库,其下载地址为:http://continuum.io/downloads。选择适合用户机器的版本然后安装即可。安装完成后,用户会发现除了系统默认的cmd.exe外,多了Anaconda Command Prompt的终端,用户可以直接使用该终端或者使用系统默认的cmd.exe。打开终端后,输入python然后按回车键,可能会发现Python的版本为2.7.5或者其他,而不是我们想要的Python3.X。没有关系,打开任意一个终端,输入以下命令:conda update anacondaoonda create –n py3k python=3.3 anaconda

在安装的过程中会有一些提示,输入y然后按回车键即可。这时可以看到所安装的一系列Python库的相关信息。等安装完成,重新打开终端,输入以下命令:activate py3k

然后在终端中输入ipython,这时将显式Python版本信息、IPython的版本信息,并启动交互性命令窗口。由于目前Anaconda支持的版本默认是Python2.7,所以每次要使用Python3.3时都需要先切换到py3k下。相关示意图如图1-2和图1-3所示。图1-2 安装Python3图1-3 IPython命令行窗口

注意 在IPython交互环境中输入help可以查看帮助信息。1.4.2 交互式命令行的使用

IPython安装成功后,可以选择使用Anaconda自带的终端或者系统终端。进入终端后,输入ipython就可以启动交互环境。若是使用原生的Python则只需输入python后回车即可启动命令行程序。本书将使用IPython进行介绍。

通过命令行可以直接向解释器输入语句,并输出程序的运行结果。命令行窗口中的“IN[1]”(原生的为“>>>”)提示符后可以输入Python程序。下面使用print语句输出字符串“hello world”,如图1-4所示。

当然也可以在命令行窗口中输入多行Python代码。下面把hello.py中的代码输入到命令行窗口。当输入完程序的最后一行,按两次回车键后即可结束程序,并输出程序的运行结果,如图1-5所示。图1-4 Python命令行窗口的使用图1-5 在命令行窗口中输入多行代码

注意 如果要退出交互式命令行,输入exit,然后按下回车键即可。1.5 Python的开发工具

Python的开发工具非常丰富,有许多强大的IDE(Integrated Development Environment)工具,如Komodo、PythonWin、Eclipse、PyCharm等。这些工具不仅支持图形化操作,而且具备编辑、调试等功能。此外文本编辑器也可作为Python的开发环境,如EditPlus、Vi等。PyCharm是JetBRAINS公司的开发的Python IDE,功能强大,近期还发布了开源社区版本,非常适合于学习。1.5.1 PyCharm的使用

PyCharm是非常好用的一款跨平台的IDE,使用Java开发,有收费版本和社区免费版,本书将使用社区免费版。下载地址是http://www.jetbrains.com/pycharm/download/index.html,下载后安装即可。

安装完成后,首次运行程序会要求设置主题等,可以选择跳过这一步或者选择自己喜欢的主题。设置完后重启,便可进入程序。因为是IDE,所以首先要创建一个项目,这时会要求设置Python路径。按照要求一步步设置即可。

注意 如果使用的是Anaconda,需要选择envs目录下py3k中的python.exe,否则将会使用默认的Python2.7版本。

PyCharm自带了Python命令行交互终端,可以很方便地运行代码和做相关的测试,鼠标移动到左下角,单击Terminal按钮即可打开,非常方便。

单击【File】|【New】菜单,选择对应的文件类型后便可以新建文件,并在其中编写Python程序。现在开始创建hello_world.py文件,编写完后选择【Run】菜单中的Run命令或者按Alt+Shift+F10组合键即可运行代码,如图1-6所示。图1-6 编写并运行hello_world.py

除此之外,PyCharm还支持快捷跳转、代码重构、代码测试、版本控制、调试等高级功能。1.5.2 Eclipse IDE的介绍

Eclipse是Java开发的一个集成开发环境,而且是一个开源项目。Eclipse的扩展性非常强,Eclipse不仅可以作为Java的IDE使用,而且还可以开发大量的插件支持其他类型的语言,如C、C++、Python、PHP等。如果要在Eclipse平台上开发Python,需要下载PyDev这个插件。easyeclipse网站提供了Eclipse的各种插件下载,而且可以获取单独运行的Easy Eclipse for Python。下载地址为www.easyeclipse.org。

Eclipse的功能非常强大,它实现了Python代码的语法加亮、代码提示和代码补全等智能化的功能。此外Eclipse提供了比PythonWin更强大的调试能力,而且还支持Jython、Pyunit、团队开发等其他功能。

在Eclipse中,源代码被组织到项目(project)中。Eclipse用户界面的结构划分为视图(View)与编辑器(Editor)。视图与编辑器的例子包括:源代码大纲视图、Java源代码编辑器、Python源代码编辑器和文件系统导航视图。Eclipse用户界面包含各种视图(perspective)。视图是通常在执行某种类型活动时使用的一组窗口。Eclipse中的标准视图包括:Debug、Java Browsing、Java、Java Type Hierarchy、Plug-in Development、CVS Repository Exploring、Resource和Install/Update。Easy Eclipse for Python提供了一个Pydev视图。当启动调试模式时,Eclipse会自动切换到Debug视图。本书9.3节将介绍Eclipse for Python的配置和调试方法。

下面在Eclipse的开发环境中编写输出字符串“hello world”的程序,如图1-7所示。图1-7 Eclipse的开发环境

注意 安装Pydev之前,需要先在计算机中安装Python。1.5.3 EditPlus编辑器环境的配置

Python也可以使用编辑器进行开发。例如,文本编辑软件EditPlus也能成为Python的编辑、执行环境,甚至可以用于调试程序。EditPlus具备语法加亮、代码自动缩进等功能。下面介绍一下如何配置EditPlus编辑器的开发环境。

1.添加Python群组

运行EditPlus,选择【工具】|【配置用户工具】命令,打开【参数】对话框。单击【添加工具】按钮,在弹出的菜单中选择【程序】命令。新建的群组名称命名为Python,在【菜单文本】文本框中输入python,在【命令】文本框中输入Python的安装路径,在【参数】文本框中输入$(FileName),在【起始目录】文本框中输入$(FileDir)。勾选【捕获输出】选项,Python程序运行后的输出结果将显示在EditPlus的输出栏。否则,运行Python程序后将弹出命令行窗口,并把结果输出到命令行中。设置后如图1-8所示。

单击【确定】按钮,新建一个Python文件,【工具】菜单下将会出现python选项。单击该选项,或使用快捷键Ctrl+1就可以运行Python程序。

2.设置Python高亮和自动完成

EditPlus不仅可以作为Python的开发环境,还支持Java、C#、PHP、HTML等其他类型的语言。不同语言的语法高亮和自动完成的表现形式各不相同。为了实现语法加亮和自动完成功能,需要下载两个特征文件,下载地址为http://www.editplus.com/files/pythonfiles.zip。下载后把文件python.acp和python.stx解压到EditPlus的安装目录下。acp后缀的文件表示自动完成的特征文件,stx后缀的文件表示语法加亮的特征文件。在编写Python代码之前,需要先在EditPlus中设置这些特征文件。(1)选择【文件】|【设置与语法】选项,在【文件类型】列表中选择【python】选项,在【描述】文本框中输入python,在【扩展名】文本框中输入py。(2)在【设置与语法】选项卡中,在【语法文件】文本框中输入python.stx的路径,在【自动完成】文本框中输入python.acp的路径,如图1-9所示。图1-8 在EditPlus中添加对Python的支持图1-9 设置Python的特征文件(3)Python的语法中不使用begin、end或{、}区分代码块,而是使用冒号和代码缩进的方式区分代码之间的层次关系。单击【制表符/缩进】按钮,打开【制表符与缩进】对话框,设置Python代码的缩进方式,如图1-10所示。在使用IDE工具时,输入冒号代码会自动缩进,用EditPlus也可以设置该功能。在【制表符】和【缩进】文本框中分别输入空格的个数,一般设置为4。选中【启动自动缩进】选项,在【自动缩进开始】选项中输入“:”,单击【确定】按钮,保存设置。(4)单击【函数模型】按钮,打开【函数模型】对话框,如图1-11所示。在【函数模型正则表达式】文本框中输入[\t]*def[\t].+:。单击【确定】按钮,保存设置。图1-10 制表符与缩进图1-11 设置函数模型

至此EditPlus的Python开发环境就设置完成了。EditPlus还可以建立Python文件的模板,以后每次新建Python文件时都可以在模板的基础上编写代码。编写Python代码经常要使用中文,同时也要考虑跨平台的功能,因此可以建立名为template.py的模板文件。template.py的内容如下所示。#!/usr/bin/python【代码说明】第1行代码使Python程序可以在UNIX平台运行。

注意 在EditPlus中通过快捷键Ctrl+F11可以查看当前Python文件中的函数列表。

运行Python程序前,需要先保存Python程序。下面使用EditPlus编写一段Python程序,并输出结果,如图1-12所示。图1-12 EditPlus运行Python程序1.6 不同平台下的Python

Java和.NET是目前工业界非常成熟的两大开发平台。Python可以在这两大开发平台上使用,也可以用Java、C#扩展Python。

1.Jython

Jython是完全采用Java编写的Python解析器。虽然Jython解释器的实现和性能与Python的解释器还有些差距,但是Jython使得Python完全可以应用在Java开发平台下。Jython使得Python程序可以在Java虚拟机上运行,同时Python可以访问Java下的类库和包。Jython也为Java提供了完善的脚本环境,Python在Java应用中可以作为中间层服务的实现语言。Jython使得Java可以扩展Python模块,反过来也可以使用Python编写Java应用。

2.IronPython

IronPython是Python在.NET平台上的实现。IronPython提供了交互式的控制台,该控制台支持动态编译。它使得Python程序员可以访问所有的.NET库,而且完全兼容Python语言。IronPython必须提供.NET 2.0版本的支持。IronPython的出现使得既可以在.NET平台下编写Python代码,又可以调用丰富的.NET类库框架。1.7 小结

本章讲解了Python的历史、特性、开发环境等方面的知识。本章重点讲解了Python开发环境的设置、PyCharm、Eclipse等IDE工具的特点、EditPlus编辑器的设置。下一章将会学习Python的基本语法,包括Python的文件类型、编码规则、数据类型、表达式等方面的内容。1.8 习题

1.Python拥有以下特性:__________,__________,__________,__________,__________,__________,__________,__________,__________。

2.Python______(需要/不需要)编译。

3.以下不属于Python内置数据结构的是( )。

A.数组

B.元组

C.列表

D.字典

4.根据自己的系统与偏好,搭建好Python开发环境,编写“hello world”程序,并运行。第2章Python必须知道的基础语法

Python的语法非常简练,因此用Python编写的程序可读性强、容易理解。本章将向读者介绍Python的基本语法及其概念,并将其与目前流行的开发语言进行比较。Python的语法与其他高级语言有很多不同,Python使用了许多标记作为语法的一部分,例如空格缩进、冒号等。本章的知识点:

·Python文件的扩展名

·Python的编码规则

·数据类型

·变量和常量的定义和使用

·运算符及表达式2.1 Python的文件类型

Python文件类型分为3种,分别是源代码、字节代码、优化代码。这些代码可以直接运行,不需要进行编译或者链接。这正是Python这门语言的特性,Python的文件通过Python解释器解释运行。Windows中有python.exe与pythonw.exe,一般安装在路径C:\Python33中,当然也可以改变它的路径,只要保证环境变量设置正确即可。在*nix系统中,Python解释器被安装在目标机器的/usr/local/bin/python目录下,将/usr/local/bin路径放进shell的搜索路径中,即可通过python命令在终端调用。2.1.1 源代码

Python源代码的扩展名以py结尾,可在控制台下运行。Python语言写的程序不需要编译成二进制代码,可以直接运行源代码。pyw是Windows下开发图形用户接口(Graphical user interface)的源文件,作为桌面应用程序的后缀名。这种文件是专门用于开发图形界面的,由pythonw.exe解释运行。以py和pyw为后缀名的文件可以用文本工具打开,并修改文件的内容。2.1.2 字节代码

Python源文件编译后生成pyc后缀的文件,pyc是编译过的字节文件,这种文件不能使用文本编辑工具打开或修改。pyc文件是与平台无关的,因此Python的程序可以运行在Windows、UNIX、Linux等操作系统上。py文件直接运行后即可得到pyc类型的文件,或通过脚本生成该类型的文件。下面这段脚本可以把hello.py编译为hello.pyc。import py_compilepy_compile.compile('hello.py')

保存此脚本,运行后即可得到hello.pyc文件。2.1.3 优化代码

扩展名为pyo的文件是优化过的源文件,pyo类型的文件需要用命令行工具生成。pyo文件也不能使用文本编辑工具打开或修改。下面把hello.py编译成hello.pyo。(1)启动命令行窗口,进入hello.py文件所在的目录。例如:cd /D D:\developer\python\example\02\2.1

D:\developer\python\example\02\2.1是笔者设置的hello.py文件所在的目录,读者可根据自己的环境进行修改。(2)在命令行中输入python-O-m py_compile hello.py,并按回车键。python -O –m py_compile hello.py【代码说明】

·参数“-O”表示生成优化代码。

·参数“-m”表示把导入的py_compile模块作为脚本运行。编译hello.pyo需要调用py_compile模块的compile()方法。

·参数“hello.py”是待编译的文件名。

最后,查看hello.py文件所在的目录,此时目录中生成了一个名为hello.pyo的文件。2.2 Python的编码规范

Python语言有自己独特的编码规则,包括命名规则、代码书写规则等。本节将详细介绍Python中常用的规则,并解释这些规则的原理和由来。2.2.1 命名规则

Python语言有一套自己的命名规则,用户也可以借鉴Java语言的命名规则形成自己命名的规则。命名规则并不是规定,只是一种习惯用法。下面介绍几个常见规范。

1.变量名、包名、模块名

变量名、包名、模块名通常采用小写,可使用下划线,示例如下。01    # 变量、模块名的命名规则02 # Filename: ruleModule.py03 04 _rule = "rule information"【代码说明】

·第2行代码声明模块的名称,模块名采用小写。也可以不指定模块名,以py后缀的文件就是一个模块。模块名就是文件名。

·第4行代码定义了一个全局变量_rule。

2.类名、对象名

类名首字母采用大写,对象名采用小写。类的属性和方法名以对象作为前缀。类的私有变量、私有方法以两个下划线作为前缀。下面这段代码演示了类的定义和实例化的规范写法。01 class Student: # 类名大写02 __name = "" # 私有实例变量前必须有两个下划线03 def __init__(self, name):04 self.__name = name # self相当于Java中的this05 def getName(self): # 方法名首字母小写,其后每个单词的首字母大写06 return self.__name07 08 if __name__ == "__main__":09 student = Student("borphi") # 对象名小写10 print(student.getName())【代码说明】

·第1行代码定义了一个名为Student的类,类名首字母大写。

·第2行代码定义了一个私有的实例变量,变量名前有两个下划线。

·第4行代码使用self前缀说明__name变量属于Student类。

·第5行代码定义了一个公有的方法,方法名首字母小写,其后的单词Name首字母大写。函数的命名规则和方法名相同。

·第9行代码创建了一个student对象,对象名小写。

说明 关于面向对象的知识会在第9章详细介绍,这里读者只需要知道类、对象、属性以及方法的书写方式即可。

3.函数名

函数名通常采用小写,并用下划线或单词首字母大写增加名称的可读性,导入的函数以模块名作前缀。下例中,为了演示导入函数前缀写法,使用了生成随机数的模块random。该模块有一个函数randrange()。该函数可以根据给定的数字范围生成随机数。randrange()声明如下所示:randrange(start, stop[, step])【代码说明】

·参数start表示生成随机数所在范围的开始数字。

·参数stop表示生成随机数所在范围的结束数字,但不包括数字stop。

·参数step表示从start开始往后的步数。生成的随机数在[start,stop-1]的范围内,取值等于start+step。

例如:randrange(1, 9, 2)

随机数的范围在1、3、5、7之间选取。下面这段代码演示了函数的规范写法,其中定义了一个compareNum(),该函数用于比较两个数字的大小,并返回对应的结果。01 # 函数中的命名规则02 import random03 04 def compareNum(num1, num2):05 if(num1 > num2):06 return 107 elif(num1 == num2):08 return 009 else:10 return -111 num1 = random.randrange(1, 9)12 num2 = random.randrange(1, 9)13 print( "num1 =", num1)14 print ("num2 =", num2)15 print (compareNum(num1, num2))【代码说明】

·第2行代码导入了random模块。

·第4行代码定义了一个函数compareNum(),参数num1、num2为待比较的两个变量。

·第5行到第10行代码比较两个数的大小,返回不同的结果。

·第11、12行代码调用random模块的randrange()函数,返回两个随机数。

·第13、14行代码输出随机数,不同的机器、不同的执行时间得到的随机数均不相同。

·第15行代码调用compareNum(),并把产生的两个随机数作为参数传入。

良好命名可以提高编程效率,可以使代码阅读者在不了解文档的情况下,也能理解代码的内容。下面以变量的命名为例说明如何定义有价值的名称。许多程序员对变量的命名带有随意性,如使用i、j、k等单个字母。代码阅读者并不知道这些变量的真实含义,需要阅读文档或仔细查看源代码才能了解其含义。下面是一个命名不规范的例子。01 # 不规范的变量命名02 sum = 003 i = 200004 j = 120005 sum = i + 12 * j【代码说明】这段代码定义了一个求和变量sum,以及两个变量i、j。如果只看代码片段,并不知道运算的含义是什么,需要通读整个函数或功能模块才能理解此处表达式的含义。

下面是一个良好命名的例子。01 # 规范的变量命名02 sumPay = 003 bonusOfYear = 200004 monthPay = 120005 sumPay = bonusOfYear + 12 * monthPay【代码说明】bonusOfYear表示年终奖金、monthPay表示月薪,因此sumPay表示全年的薪水。命名良好的变量可以节省阅读程序的时间,更快地理解程序的含义。

注意 变量的命名应尽可能地表达此变量的作用,尽量避免使用缩写,以至于任何人都能理解变量名的含义。不用担心变量名的长度,长的变量名往往能更清楚地表达意思。

以上讨论的命名方式同样适用于模块名、类名、方法名、属性名等。命名规则会带来很多益处。统一命名规则便于开发团队合作开发同一个项目;便于统一代码的风格,理解不同程序员编写的代码;命名规范的变量名使函数的内容更容易被理解;避免项目中随意命名变量的情况,促进程序员之间的交流。规则并不是绝对的,统一规则、表达清楚名称的含义才是制定规则的原因。2.2.2 代码缩进与冒号

代码缩进是指通过在每行代码前输入空格或制表符的方式,表示每行代码之间的层次关系。任何编程语言都需要用代码缩进清晰程序的结构,采用代码缩进的编程风格有利于代码的阅读和理解。对于C、C++、Java等语言,代码缩进只是作为编程的一种良好习惯而延承下来。对于Python而言,代码缩进是一种语法,Python语言中没有采用花括号或begin…end…分隔代码块,而是使用冒号和代码缩进区分代码之间的层次。

使用IDE开发工具或EditPlus等编辑器书写代码时,编辑器会自动缩进代码、补齐冒号,提高编码效率。下面这段代码中的条件语句采用了代码缩进的语法。01 x = 102 if x == 1:03 print( "x =", x) # 代码缩进04 else:05 print( "x =", x) # 代码缩进06 x = x + 1 # 代码缩进07 print ("x =", x)【代码说明】

·第1行代码创建了变量x,并赋值为1。在赋值运算符的两侧各添加一个空格,这是一种良好的书写习惯,提高了程序的可读性。

·第2行代码使用了条件语句if,判断x的值是否等于1。if表达式后输入了一个冒号,冒号后面的代码块需要缩进编写。本行代码与第1行代码处于同一个层次,直接从最左端书写代码。

·第3行代码表示x的值等于1时输出的结果。当if条件成立时,程序才能执行到第3行,所以第3行代码位于第2行代码的下一个层次。在编码时,首先在最左端输入4个空格或制表键(不建议),然后再书写print语句。输出结果:x = 1

·第4行代码的else关键字后是一段新的代码块。当x的值不等于1时,程序将执行第5、6行代码。

·第5、6行代码采用缩进式的代码风格。

·第7行代码输出结果:x = 1

Python对代码缩进要求非常严格。如果程序中不采用代码缩进的编码风格,将抛出一个IndentationError。下面这段代码是错误的编码方式。01 x = 002 if x == 1:03 print( "x =", x)04 else:05 print( "x =", x) # 代码缩进06 x = x + 1 # 代码缩进07 print ("x =", x)【代码说明】第3行没有缩进代码,python不能识别出代码的层次关系,python误认为if x==1:语句后没有代码块。代码运行后输出如下错误:IndentationError: expected an indented block

注意 如果缩进的代码前只有一个空格或几个制表符也是符合语法的,但是这种写法并不推荐。最佳的方式是编码前统一代码的书写规则,所有代码前的空格数保持一致,最好使用4个空格缩进。

每行代码缩进的情况不同,代码执行的结果也不同。例如,前文提到的hello.py,else子句包含的两条语句都采用了代码缩进的格式,这两条语句组成了一个代码块。如果把hello.py的代码修改为如下的内容,则变量x的值将有所变化。01 x = 102 if x == 1:03 print( "x =", x) # 代码缩进04 else:05 print( "x =", x) # 代码缩进06 x = x + 107 print( "x =", x)【代码说明】

·第6行代码与第1行代码处于同一个层次,是主程序必须执行的代码,因此变量x的值为2。

·第7行代码的输出结果如下。x = 2

注意 当程序出现问题时,程序员首先要检查代码的书写格式,是否因为代码缩进的问题导致了不期望的计算结果。2.2.3 模块导入的规范

模块是类或函数的集合,用于处理一类问题。模块的导入和Java中包的导入的概念很相似,都使用import语句。在Python中,如果需要在程序中调用标准库或其他第三方库的类,需要先使用import或from…import…语句导入相关的模块。

1.import语句

下面这段代码使用import语句导入sys模块,并打印相关内容。01 # 规范导入方式02 import sys03 04 print (sys.path)05 print (sys.argv)【代码说明】

·第2行代码使用import语句导入了sys模块,sys模块是处理系统环境的函数的集合。

·第4行代码输出Python环境下的查找路径的集合,Python默认情况下会查找sys.path返回的目录列表。列表是Python内置的数据结构,定义了一组相同意义的数据,通常用来作为参数或返回值。关于列表的知识请参考第4章的内容。本行代码的输出结果如下。['D:\\developer\\python\\example\\02\\2.2\\2.2.3','C:\\WINDOWS\\system32\\python25.zip','D:\\developer\\python\\DLLs', 'D:\\developer\\python\\lib','D:\\developer\\python\\lib\\plat-win','D:\\developer\\python\\lib\\lib-tk','D:\\developer\\python','D:\\developer\\python\\lib\\site-packages','D:\\developer\\python\\lib\\site-packages\\win32','D:\\developer\\python\\lib\\site-packages\\win32\\lib','D:\\developer\\python\\lib\\site-packages\\Pythonwin','D:\\developer\\python\\lib\\site-packages\\wx-2.8-msw-unicode']

·第5行代码中的sys.argv是存储输入参数的列表。默认情况下,argv自带的参数是文件名。输出结果如下。['import.py']

2.from…import…语句

使用from…import…语句导入与使用import语句导入有所不同,区别是前者只导入模块中的一部分内容,并在当前的命名空间中创建导入对象的引用;而后者在当前程序的命名空间中创建导入模块的引用,从而可以使用“sys.path”的方式调用sys模块中的内容。

下面这段代码实现了与上面代码相同的功能,不同的是使用了from…import…语句导入指定内容。01 #不规范导入方式02 from sys import path03 from sys import argv04 05 print (path)06 print (argv)【代码说明】第5、6行代码直接调用path、argv列表的内容,没有模块名的限定,但这种写法不够规范。如果程序比较复杂,导入了很多模块,阅读程序的人并不了解path、argv来自哪个模块。而通过sys.path、sys.argv的写法可以清楚地知道path、argv来自sys模块。2.2.4 使用空行分隔代码

函数之间或类的方法之间用空行分隔,表示一段新的代码的开始。类和函数入口之间也用一行空行分隔,突出函数入口的开始。下面这段代码创建了一个类A,类A中定义了两个方法funX()和funY()。01 class A:02 def funX(self):03 print( "funY()")04 05 def funY(self):06 print ("funY()")07 08 if __name__ == "__main__":09 a = A()10 a.funX()11 a.funY()【代码说明】

·第4行代码插入了一个空行,便于程序员阅读代码,表示区分方法之间的间隔。

·第7行代码也是一个空行。因为下面的if语句是主程序的入口,用于创建类A的对象,并调用其方法。

空行与代码缩进不同,空行并不是Python语法的一部分。书写时不插入空行,Python解释器运行也不会出错。但是空行的作用在于分隔了两段不同功能或含义的代码,便于日后代码的维护或重构。记住,空行也是程序代码的一部分。2.2.5 正确的注释

注释是用于说明代码实现的功能、采用的算法、代码的编写者以及代码创建和修改的时间等信息。注释是代码的一部分,注释起到了对代码补充说明的作用。C、C++、Java均采用“//”或“/**/”作为注释的标记,Python的注释方式有所不同。如果只对一行代码注释,使用“#”加若干空格开始,后面是注释的内容。如果对一段代码进行注释,也使用“#”,段落之间以一个“#”行分隔。Python会忽略“#”行的内容,跳过“#”行执行后面的内容。下面的代码演示了Python的注释。01 # note - show Python's note02 # Copyright (C) 2008 bigmarten03 #04 # This program is free software. you can redistribute it and/or modify05 # it under the terms of the GNU General Public License as published by06 # the Free Software Foundation07 #08 ########################################################################09 #10 # Version is 1.011 #12 # Its contents are calculate payment13 #14 ########################################################################15 16 # 规范的变量命名17 sumPay = 0 # 年薪18 bonusOfYear = 2000 # 年终奖金19 monthPay = 1200 # 月薪20 sumPay = bonusOfYear + 12 * monthPay # 年薪 = 年终奖金 + 12 * 月薪【代码说明】

·第1行代码对本文件进行摘要说明。

·第2行代码声明了版权信息。

·第3行代码是空行,说明下面将另起一段,注释其他的内容。

·第4行到第6行代码说明程序的许可信息。

·第8行到第14行代码说明程序的版本和实现的功能。

·第16行开始的代码实现程序的功能,并在行末对每行代码进行单行注释。

Python还有一些特殊的注释,完成一些特别的功能,如中文注释、程序的跨平台。(1)中文注释:如果需要在代码中使用中文注释,必须在Python文件的最前面加上如下注释说明。# -*- coding: UTF-8 -*-

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载