Learning Python读书笔记
tnaig
这个作者很懒,什么都没留下…
展开
-
Learning Python Part II 之 迭代和推导式
for循环能够遍历列表、元组、字符串等,然而不仅仅有这些,更广泛的讲,for循环能够遍历所有可迭代对象( iterable objects )。可迭代对象包括物理序列( physical sequence )和 虚拟序列 (virtual sequence ) 物理序列:指物理意义上按顺序存储的数列,例如列表、元组等 虚拟序列:指在for循环之类的迭代工具中每次产生一个结果 迭代工原创 2017-09-25 23:10:42 · 241 阅读 · 0 评论 -
Learning Python Part II 之 作用域(scope)
引言当你在程序中使用一个变量名时,Python在一个称为命名空间(namespace)地方创建、改变、查找。命名空间是变量名存在的地方。Python会根据变量名第一次赋值的位置决定将变量名放到不同的命名空间。换句话说,在源代码中给变量名赋值的位置决定了这个名字会存在于哪个命名空间和这个名字的作用域。例如,在函数内部赋值的变量名会被放到函数的命名空间,也就是说这个变量只在函数内有效。进阶命名空间是可以原创 2017-10-11 22:00:21 · 258 阅读 · 0 评论 -
Learning Python Part IV 之类和面向对象
引言我们写的代码都是以对象为基础的——我们在代码中不断的传递对象,在表达式中使用、调用它们的方法等。为了把我们的代码真正的面向对象object-oriented(OO),我们的对象也会参与称作inheritance hierarchy的东西。类是一种用来在Python中实现支持继承的新类型的对象的代码结构。类是Python中的主要的面向对象编程(OOP)工具。OOP提供了一种完全不同的而且往往是更高原创 2017-10-30 20:56:25 · 240 阅读 · 0 评论 -
Learning Python Part IV 之 属性继承搜索(Attribute Inheritance Search)
比起在例如C++、JAVA中,OOP在Python中理解和使用起来更简单。作为一个动态类型编程语言,Python移除了很多的复杂和混乱语法,包括其他工具中的Clouds OOP。事实上,Python中的大部分OOP赘述都可以归结为这个表达式: object.attribute之前我们已经用过这个表达式访问模块的属性、调用对象的方法等,对于一个由class语句产生的对象来说这个表达式在Pytho原创 2017-10-30 21:22:23 · 372 阅读 · 0 评论 -
Learning Python Part II 之 nonlocal语句
在下面的例子中taster返回函数nested,以备之后调用。对变量state的搜索符合通常的变量搜索规则。>>> def tester(start):... state = start... def nested(label):... print(label, state)... return nested... >>> F = tester(0原创 2017-10-13 20:47:02 · 410 阅读 · 0 评论 -
Learning Python Part III 之 模块的重载
正如之前所说,默认情况下一个模块的代码在每个进程中只运行一次。如果要强制要求一个模块的代码被重新加载和运行,你需要调用内置函数reload,概括的来讲:Import(包括import和from)在每个进程中仅仅在第一次被导入时加载和运行模块的代码之后的导入直接使用已经加载的模块对象,而不需要重新加载和运行模块代码reload函数会强制将已经已经加载的模块文件被重新加载和运行,赋值会直接改变已经原创 2017-10-24 15:26:02 · 215 阅读 · 0 评论 -
Learning Python Part III 之 模块的使用
先简单创建一个模块文件作为例子:#module1.pydef printer(x): print(x)import 语句>>> import module1>>> module1.printer('Hello world!')Hello world!from 语句因为from直接从一个文件中拷贝一个特定的名字到其它作用域,它允许我们在代码中直接使用拷贝的名字而不需要通过模块:>>> f原创 2017-10-22 20:22:40 · 204 阅读 · 0 评论 -
Learning Python Part III 之 Import 中的模块文件选择
时刻记着Import语句中的文件名后缀是省略的。Python会选择在搜索路径中找到的第一个符合文件名的文件。事实上,import正是外部扩展组件的意义所在——源码、各种各样的字节代码、编译过的扩展等等,Python会自动选择任何类型的符合模块名字的文件。模块源例如,一个import语句import b会如何加载和处理:一个名叫b.py的源代码文件一个名叫b.pyc的字节代码文件一个名叫b.py原创 2017-10-20 20:12:26 · 318 阅读 · 0 评论 -
Learning Python Part III 之 模块的搜索路径
在大多数情况下,你可以使用Python默认的搜索路径不需要去配置。但是如果你想跨目录的引用自定义的文件,那就需要知道如何定制化了。概括的讲,Python的搜索路径由几大块组成,其中的一些已经预先设置过,而有一些需要你告诉Python哪里去找: 程序的根目录 PYTHONPATH目录(如果设置的话) 标准库文件目录 pth文件的内容(如果有的话) 第三方扩展的site-packages下面是原创 2017-10-18 14:57:17 · 244 阅读 · 0 评论 -
Learning Python Part III 之 字节代码文件:__pycache__
如之前提到的,Python储存字节代码文件的方式在Python3.2之后有所改变。首先,如果因为某些原因Python无法在你的电脑上读写文件,你的程序仍然会正常运行——Python在创建字节代码文件之后会把它存在内存中并使用,在退出之后便废弃。为了加快启动的速度,Python会尝试把字节代码文件存在文件中以便下一次使用跳过编译步骤。但做的方式却不尽相同:Python3.X之前的版本(包括所有Pyth原创 2017-10-18 14:31:52 · 502 阅读 · 0 评论 -
Learning Python Part III 之 Import 是如何工作的
一些人喜欢将Python 的模块import操作比作C的 #include,但是这是完全不同的——在Python中,import不仅仅是将一个文件中的代码插入到另一个文件中,而是真正的运行时操作符。通过完全不同的三步完成整个import操作:找到模块文件把它编译成字节代码(如果需要的话)运行模块的代码建立其中定义的对象但是值得注意的是,这三步只有在程序运行时一个模块第一次被import的时候原创 2017-10-17 15:30:41 · 380 阅读 · 0 评论 -
Learning Python 之 Python中的对象分类
Python中的对象之间有联系也有区分,如字符串和列表都可以执行切片、索引等操作,说明字符串和列表之间是有关系的,那么理清这些关系有助于我们更好的理解python。我们知道,字符串是不可变类型(immutable)的序列(sequences):字符串不能够在内存中直接改变(例如:>>> 'python'[0] = m这个操作并不能够改变python这个字符串对象,不可变性是不可变类型的属性);字符串原创 2017-10-04 21:28:34 · 320 阅读 · 0 评论 -
Learning Python Part I 之 文件
比起其它数据类型,文件对象有一些不同。它被认为核心类型只是因为文件对象是由内建函数创建的,但它不是数字、不是序列、也不是映射。它只适用于文件处理的相关方法。方法:open函数的第二个参数为打开类型,r表示只读;w表示写入;a表示添加到末尾。 notes文件迭代器是一行一行读取文件的最好方法 尽管文件有很多读取文件的方法,但永远记着。读取文件的最好方法不是一次读取完整个文件,而是通过for循环原创 2017-10-05 16:49:29 · 261 阅读 · 0 评论 -
Learning Python Part II 之 赋值语句(Assignments)
特性赋值语句创建的是对象引用Python创建的是指向对象的引用而不是对象的拷贝。Python中的变量更像是指针而不是数据存储区域。变量名在第一次赋值时被创建 变量在第一次被引用之前必须被赋值 一些运算隐含性的包含赋值赋值语句不止有 = ,模块引用、函数和类定义、for循环变量、函数的参数都是隐含性的赋值,因为所有的这些操作都是将名字和对象的引用捆绑起来。赋值语句格式序列赋值>>> nudge原创 2017-10-09 22:28:34 · 594 阅读 · 0 评论 -
Learning Python :Part I 数据类型和操作
Python之中一切皆对象,所有对象都有相应的操作,如方法、属性等,表4-1是Python的一些数据类型,包括数字、字符串、列表、字典、元组、文件、集合等: 数字 动态类型 字符串 列表 字典 元组 文件 其他类型原创 2017-10-01 21:10:29 · 186 阅读 · 0 评论 -
Learning Python Part II 之 表达式语句(Expression)
在Python中,你也可以把表达式当做一条语句来用——自己独占一行。但因为表达式的值不会被保留,所以只有当有意义的时候才这样做。常见于下列两种情况:为了调用函数或方法:一些函数和方法完成自己的功能之后不需要返回值,可以通过表达式语句调用这些函数或方法。为了在交互式提示符中打印值:Python返回输入交互式命令行的表达式的值,其实这些也是表达式语句,服务于 print 语句常见的表达式语句形式:原创 2017-10-10 11:58:42 · 648 阅读 · 0 评论 -
Learning Python Part II 之 Print
passPython3.X的print函数严格来讲,printing在Python3.X中并不是一个单独的语句,而是之前所说的表达式语句。 print内置函数通常单独一行调用,因为它不返回任何值(严格来讲是返回None)。但因为它是函数,我们使用标准的函数调用语法而不是特殊的语句格式。并且因为它通过关键词参数提供特殊的操作模式,所以这种形式更通用和以后的拓展。调用格式print([object,原创 2017-10-10 15:31:07 · 271 阅读 · 0 评论 -
Learning Python Part I之数字类型(Numeric Types)
在Python中,数据都采用对象的形式–包括Python内置的对象和我们通过Python工具或其他语言例如C等创造的对象,对象是Python中最基本的概念。数字类型基础在Python中,数字并不是单一的对象类型,而是包含一类相似的类型,Python支持通常的数字类型如整数和浮点型,而且支持更高级的数字类型和对象,Python中的数字工具包括:整型和浮点型对象(integer and float-p原创 2017-10-02 22:39:25 · 455 阅读 · 0 评论 -
Learning Python Part I 之动态类型
之前我们已经了解到,在Python中我们不需要提前声明在代码中所需要使用的变量。事实上,当我们设计程序时甚至不应该去关注特定类型,因为Python会自动分配类型。Python是简洁灵活的语言,而动态类型是灵活性的根本变量、对象和引用(references)变量创建:变量在当你在代码中第一次赋值时被创建,当以后再次赋值时会改变变量的值 变量类型:一个变量从来不会有特定类型或相关的限制,类型的概念依存原创 2017-10-03 17:09:18 · 206 阅读 · 0 评论 -
Learning Python Part I 之 字符串
字符串——一串有序的字符用来储存或代表文本或者位信息。在Python3.x中,有三种字符串类型: Str 用于 Unicode文本(包括 ASC II); bytes用于二进制数据(包括编码文本); bytearray是bytes的变体,是可变的(mutable)。文件有两种模式:通过Unicode编码的Str文本和bytes表示的二进制数据。在Python2.x中,unicode 字原创 2017-10-04 20:39:56 · 352 阅读 · 0 评论 -
Learning Python Part I 之 列表
特性列表的几种特性:任意对象的有序集合体: 从功能的角度来讲,列表就是一个容器,可以用来收集可以被当做一个群组的任意对象。并且列表中的对象保持从左到右的位置顺序,由此可见,列表也是序列。可以通过偏移量访问包含的对象: 列表也是序列类型,可以适用序列类型的所有操作可变长度、异构性(heterogeneous)和任意嵌套可以增加和删除包含的对;可以包含任意类型的对象,不仅仅是字符串和原创 2017-10-05 14:06:03 · 205 阅读 · 0 评论 -
Learning Python Part I 之 字典
字典是Python中最灵活的内置数据类型之一。如果说列表是有序的对象集合体,那么字典就是无序的集合体。它们之间的区别就是字典是通过键值索引,而不是偏移量,并且字典要比列表更快。字典可以取代许多低级语言中的搜索算法和数据结构体。字典有时也扮演其他语言中的记录、结构体、符号表的角色。特性键值索引,而不是偏移量任意对象的无序集合体可变长度、异构性和任意嵌套属于可变的映射类型是一个储存内部对象引用原创 2017-10-05 14:31:23 · 268 阅读 · 0 评论 -
Learning Python Part I 之 元组
元组(tuples)和列表很相似,只不过列表是不可变对象。尽管它支持的方法不像列表那么多,但还是与列表有很多共同的特性:有序的任意对象集合体通过偏移量索引属于不可变序列固定长度、异构性和任意嵌套 因为元组是不可变对象,所以不能都在不复制的情况下改变元组长度,但可以和列表和字典一样,可以任意嵌套。是一个保存其它对象引用的数组方法举例原创 2017-10-05 14:52:54 · 259 阅读 · 0 评论 -
Learning Python Part III 之 模块
模块打包程序代码和数据以便重用,并有自己的命名空间以便在程序中最小化命名冲突。更严格的来讲,模块是和Python的程序文件相对应的,一个文件就是一个模块,模块通过引用模块来使用其他模块中定义的变量。模块扮演的角色:代码重用系统命名空间分割共享服务和数据例子# a.pydef spam(text): print(text, 'spam')# b.pyimport b b原创 2017-10-16 20:58:06 · 237 阅读 · 0 评论