您好,欢迎访问三七文档
1/106第一部分使用入门第1章问答环节一、人们为何使用Python1、软件质量在很大程度上,Python更注重可读性、一致性和软件质量,从而与脚本语言世界中的其他工具区别开来。Pythoin代码的设计致力于可读性,因此具备了比传统脚本语言更优秀的可重用性和可维护性。此外,Python支持软件开发的高级重用机制。2、提高开发者的效率3、程序的可移植性4、标准库的支持Python内置了众多预编译并可移植的功能模块,这些功能模块叫做标准库。5、组件集成Python代码可以调用C和C++的库,也可以被C/C++的程序调用。6、享受乐趣二、Python是脚本语言吗Python是一门多种用途的编程语言,时常在扮演脚本语言的角色。一般来说,Python可定义为面向对象的脚本语言;这个定义把对面向对象的支持和全面的面向对象脚本语言的角色融合在一起。第2章PYthon如何运行程序一、Python程序如何运行1、字节码编译当程序执行时,Python内部(以大多数用户是完全隐藏的)会先将源代码编译成所谓字节码的形式。编译是一个简单的翻译步骤,而且字节码是源代码底层的、与平台无关的表现形式。PYthon这样保存字节码作为一种启动速度的优化。下一次运行程序时,如果你在上次保存字节码之后没有修改过源代码的话,Phthon将会加载.pyc文件并跳过编译这个步骤。2、开发的含义因为Python代码可以动态地修改,用户可以改进系统内部的Python部分,而不需要拥有或编译整个系统的代码。从更基础的角度来说,牢记我们在Python中真正拥有的只有运行时,完全不需要初始的编译阶段,所有的事情都是在程序运行时发生的。这甚至还包括了建立函数和类的操作以及连接的模块。这些事情对于静态语言往往是发生在执行之前的,而在Python中是与程序的执行同时进行的。二、冻结二进制文件冻结二进制文件能够将程序的字节码,PVM(解释器)以及任何程序所需要的Python支持文件2/106捆绑在一起形成一个单独的文件包。过程会有一些不同,但是实际的结果将会一个单独的可执行二进制程序,这个程序可以很容易地向客户分发。如今,主要有三种系统能够生成冻结二进制文件:py3exe、PyInstaller以及freeze。冻结二进制文件与真实的编译输出结果有所不同:它们通过虚拟机运行字节码。因此,如果离开了必要的初始改进,冻结二进制文件和最初的源代码程序运行速度完全相同,冻结二进制文件并不小。第3章如何运行程序一、为什么使用交互提示模式1、实验由于代码是立即执行的,交互提示模式变成了实验这个语言的绝佳的地方。当你对一段Python代码的运行有任何疑问提时候,马上打开交互命令行并实验代码,看看会发生什么。2、测试除了充当学习语言的体验工具,交互式解释器也是测试已经写入到文件中的代码的好地方。你可以交互地导入模块文件,并通过在交互提示模式中输入命令从而在它们定义的工具上运行测试。更为常见的是,交互提示模式是一个测试程序组件的地方,不需要考虑其源代码,你可以在Python文件中导入并测试函数和类,通过输入命令来连接C函数,在Jython中使用的Java类等。二、使用交互提示模式1、只能够输入Python命令2、在文件中打印语句是必须的在文件中编写代码时,用户必须使用print语句来时行输出,因为表达式的结果不会自动反应。3、在交互提示模式下不需要缩进(目前还不需要)4、留意提示符的变换和复合语句5、在交互提示模式中,用一个空行结束复合语句在交互提示模式中,要告诉交互式Python已经输入完了多行语句,必须要插入一个空行,也就是说你必须按下两次Enter键两次,才能运行一条复合语句。6、交互提示模式一次运行一条语句。在脚本文件中,复合语句的后面不需要空行,只在交互提示模式下,才需要该穿行。三、使用命令行和文件1、注意Windows上的默认扩展名2、在系统提示模式下使用文件扩展名,但是在导入时别使用文件扩展名。3、在文件中使用print语句。四、UNIX可执行脚本(#)3/106在Linux及其他类UNIX系统上使用Python,可以将Python代码编程为可执行程序。1、它们的第一行是特定的脚本的第一行往往以字符#!开始,其后紧跟机器Python解释器的路径2、它们往往都有可执行的权限3、示例#!/usr/local/bin/pythonPrint(‘TheBrightSide…’)4、也可以避免硬编码Python解释器的路径#!/usr/bin/envpython五、模块导入和重载用简单的术语来讲,第一个以扩展名py结尾的Python源代码文件都是一个模块。其他的文件可以通过导入一个模块读取这个模块的内容。导入从本质上来讲,就是载入另一个文件,并能够读取那个文件的内容。一个模块的内容通过这样的属性能够被外部世界使用。这种基于模块的方式使模块变成了Python程序架构的一个核心概念。更大的程序往往以多个模块文件的形式出现,并且导入了其他模块文件的工具。其中的一个模块文件设成成主文件,或叫做顶层文件。在第一次导入之后,其他的导入都不会再工作,甚至在另一个窗口中改变并保存了模块的源代码文件也不行。示例:importscript1这是有意设计的结果,导入是一个开销很大的操作,以至于每个文件、第个程序运行不能够重复多于一次。六、模块的显要特性:属性一般意义上来说,模块往往就是变量名的封装,被认作是命名空间。在一个包中的变量名就是所谓的属性:也就是说,属性就是绑定在特定的对象上的变量名。导入者得到了模块文件中在顶层所定义的所有变量名。这些变量名通常被赋值给通过模块函数、类、变量以及其他被导出的工具。From和import很相似,只不过增加了对载入组件的变量名的额外赋值。从技术上讲,from复制了模块的属性,以便属性能够成为接收者的直接变量。例:frommyfileimporttitle这时就直接使用title而不是myfile.title无论使用的是import还是from去执行导入操作,模块文件myfile.py的语句都会执行,并且导入的组件在顶层文件中得到了变量名的读取权。如果开始在模块中定义对象,例如,函数和类时,这个概念将会很有用。模块导入是一种运行代码文件的方法,模块同样是Python程序最大的程序结构。一般来说,Python程序往往由多个模块文件构成,通过import语句连接在一起。每个模块文件是一个独立完备的变量包,即一个命名空间。一个模块文件不能看到其他文件定义的变量名,除非它显式地导入了那个文件,所以模块文件在代码文件中直到了最小化命名冲突的作用。因为每个文件都是量个独立完备的命名空间,即使在它们拼写相同的情况下,一个文件中的变量名是不会与另一个文件中的变量冲突的。Python具有了能够避免命名冲突的优点,就目前而言,模块是一个不需要重复输入而反复4/106运行代码的方法。**import和reload的使用注意事项1、你需要记住是何时导入的,才能知道能不能够reload,你需要记住当调用reload时需要使用括号,并且要记住让代码的最新版本运行时首先使用reload。此外,reload是不可传递的,重载一个模块的话只会重载该模块,而不能够重载该模块所导入的任何模块,因此,有时候必须reload多个文件。2、要避免使用import和reload启动程序第二部分类型和运算第4章介绍Python对象类型Python程序可以分解成模块、语句、表达式以及对象。1、程序由模块构成2、模块包含语句3、语句包含表达式4、表达式建立并处理对象一、为什么使用内置类型事实上,除非你有内置类型无法提供的特殊对象要处理,最好总是使用内置对象而不是使用自己的实现,具体原因如下:1、内置对象使程序更容易编写2、内置对象是扩展的组件对于较为复杂的任务,或许仍需要提供自己的对象,使用Python的类或C语言的接口3、内置对象往往比定制的数据结构更有效率4、内置对象是语言的标准的一部分从某种程度上说,Python不但借鉴了依靠内置工具的语言,而且汲取了那些依靠程序员去自己实现的工具或框架的语言的优点。(一)Python的核心数据类型对象类型例子常量/创建数字1234,2.33,2+4j,Decimal,Fraction字符串‘spam’,”guidd’s”,b’a\xolc’列表[1,[2,’ther’],4]字典{‘food’:’spam’,’tast’:’yum’}元组(1,’spam’,4,’U’)文件myfile=open(‘eggs’,’r’)集合set(‘abc’),{‘a’,’b’,’c’}其他类型类型、None、布尔型编程单元类型函数、模块、类5/106与实现相关的类型编译的代码堆栈跟踪同等重要的是,一旦创建了一个对象,它就和操作集合绑定了—--只可以对字符串进行字符串相关的操作,对列表进行列表相关的操作。Python是动态类型的(它自动地跟踪你的类型而不是要求声明代码),但是它也是强类型语言(你只能对一个对象进行适合该类型的有效的操作)。列表和字典就是强大的数据表现工具,省略了在使用底层语言的过程中为了支持集合和搜索而引入的绝大部分工作。简而言之,列表提供了其他对象的有序集合,而字典是通过键存储对象。列表和字典都可以嵌套,可以随需要扩展和删减,并能够包含任意类型的对象。二、数字Python的核心对象集合包括常规的类型:整数、浮点数以及复数、固定精度的十进制数、带分子和分母的有理分数以及集合等。三、字符串(一)序列的操作作为序列,字符串支付假设其中各个元素包含位置顺序的操作。在Python中,索引是按照从最前面的偏移量进行编码,也就是从0开始,如S[0]。也能够反向索引,从最后一个开始(正向索引从左边开始计算,反向索引是从右边开始计算),如S[-1]。一般来说,负的索引号会简单地与字符串的长度相加。能够在方括号中使用任意表达式,而不仅仅是使用数字常量。序列也支持一种分片的操作S[1:3],取1,2not3,它们的一般形式为X[I:J],表示”取出在X中从偏移量为I,直到但不包括偏移量为J的内容”。结果就是返回一个新的对象。X[:],在一个分片中,左边界默认为0,并且右边界默认为分片序列的长度。作为一个序列,字符串也支持使用加号进行合并,或者重复。X+Y、X*8(二)不可变性注意:在之前的例子中,没有通过任何操作对原始的字符串进行改变。每个字符串都被为义为生成新的字符串作为其结果,因为字符串在Python中具有不可变性----在创建后不能就地改变。例如,不能通过对其某一位置进行赋值而改变字符串,但是你总是可以通过建立一个新的字符串并以同一个变量名对其进行赋值。因为Python在运行过程中会清理旧的对象。(三)类型特定的方法字符串的find方法是一个基本的子字符串查找的操作。字符串还支持一个叫做格式化的高级替代操作。例:‘%s,eggs,and%s’%(‘spam’,‘SPMA!’)注意:尽管序列操作是通用的,但方法不通用。一条简明的法则是这样的:可作用于多种类型的通用型操作都是以内置函数或表达式的形式出现的,但是类型特定的操作是以方法调用的形式出现的。6/106(四)寻求帮助Dir函数简单地给出了方法的名称。要查询它们是做什么的,可以将其传递给help函数。Help(S.replace)(五)编写字符串的其他方法Python允许字符串包括在单引号或双引号中(它们代表着相同的东西)。它也允许在三个引用(单引号或双引号)中包括多行字符串常量。当采用这种形式的时候,所有的行都合并在一起,并在每一行的末尾增加换行符。Python也支持原始(raw)字符串常量,即去掉反斜线转义机制(这样的字符串常量是以字母r开头的)。Str字符串类型也处理Unicode,Bytes类型表示原始字节字符串。(六)模式匹配字符串对象的方法能够支持基于模式的文本处理。三、列表Python的列表对象是这个语言提供的最通用的序列。列表是一个任意类型的对象的位置相关的有序集合,它没有固定的大小,通过对偏移量进行赋值以及其他各种列表的方法进
本文标题:python笔记
链接地址:https://www.777doc.com/doc-3198692 .html