Python 学习笔记

字典是通过这样的算法来比较的: 首先是字典的大小,然后是键,最    
后是值。可是,用 cmp() 做字典的比较一般不是很有用  
 
1)比较字典长度    
如果字典的长度不同,    
那么用 cmp(dict1, dict2) 比较大小时,    
如果字典 dict1 比 dict2 长,    
cmp()返回正值,如果 dict2 比 dict1 长,则返回负值。也就是说,字典中的键的个数越多,这个    
字典就越大,即:    
len(dict1) > len(dict2) ==> dict1 > dict2    
(2)比较字典的键    
如果两个字典的长度相同,那就按字典的键比较;键比较的顺序和 keys()方法返回键的顺序相    
同。 (注意: 相同的键会映射到哈希表的同一位置,这保证了对字典键的检查的一致性。) 这时,    
如果两个字典的键不匹配时,对这两个(不匹配的键)直接进行比较。当 dict1 中第一个不同的键大    
于 dict2 中第一个不同的键,cmp()会返回正值。    
(3)比较字典的值    
如果两个字典的长度相同而且它们的键也完全匹配,则用字典中每个相同的键所对应的值进行    
比较。一旦出现不匹配的值,就对这两个值进行直接比较。若 dict1 比 dict2 中相同的键所对应的    
值大,cmp()会返回正值。    
(4) Exact Match    
到此为止,即,每个字典有相同的长度、相同的键、每个键也对应相同的值,则字典完全匹配,    
返回 0 值。

对象同一性,在 Python 中写为 str1 is str2

比较两个字符串值,在 Python 中,你要使用 str1 == str2。

在 Python 中,只有类属性可以定义在这里(紧跟在类定义之后定义),数据属性定义在 __init__ 方法中。

每个 Python 类都拥有一个内置的类属性 __module__,它定义了这个类的模  
块的名字

sys.modules[FileInfo.__module__]) 可以得到对应模块的引用,

FileInfo.__module__ 可以得到FileInfo类属于的模块名字(string)

getattr,它可以通过名字得到一个对象的引用

再次强调[:]得到的是包含了X所有元素的分片,这是一种很有效率的复制整个列表的方法。  
只是简单的把X复制给Y是没有用的,因为这样做就让X和Y都指向同一个列表了    
先复制,后排序    
y=x[:]    
y.sort()

字符串 都是不可变的 在序列中不可改变

在类中,self.__class__表示引用实际的类,self.__class__.name 表示实例化对象的类的名字

核心笔记:__name__ 指示模块应如何被加载

由于主程序代码无论模块是被导入还是被直接执行都会运行, 我们必须知道模块如何决定

运行方向。一个应用程序可能需要导入另一个应用程序的一个模块,以便重用一些有用的代码

(否则就只能用拷贝粘贴那种非面向对象的愚蠢手段)。这种情况下,你只想访问那些位于其

它应用程序中的代码,而不是想运行那个应用程序。因此一个问题出现了,“Python 是否有

一种方法能在运行时检测该模块是被导入还是被直接执行呢?” 答案就是......(鼓声雷

动).....没错! __name__ 系统变量就是正确答案。

如果模块是被导入, __name__ 的值为模块名字

如果模块是被直接执行, __name__ 的值为 ‘__main__‘

对象的引用计数在下列情况增加:

1:对象被创建

x = 3.14

2:或另外的别名被创建

y = x

3: 或被作为参数传递给函数(新的本地引用)

一个对象的引用计数在以下情况会减少:

1: 一个本地引用离开了其作用范围。比如 foobar()(参见上一下例子)函数结束时。

2: 对象的别名被显式的销毁。

del y # or del x

3: 对象的一个别名被赋值给其它的对象

x = 123

4: 对象被从一个窗口对象中移除

myList.remove(x)

5: 窗口对象本身被销毁

del myList # or goes out-of-scope

del 语句

Del 语句会删除对象的一个引用,它的语法是:

del obj1[, obj2[,... objN]]

例如,在上例中执行 del y 会产生两个结果:

? 从现在的名字空间中删除 y

? x 的引用计数减一

foo1 = foo2 = 4.3

当你从值的观点看这条语句时, 它表现的只是一个多重赋值,将 4.3 这个值赋给了 foo1

和 foo2 这两个变量。这当然是对的, 不过它还有另一层含义。 事实是一个值为 4.3 的数字对

象被创建,然后这个对象的引用被赋值给 foo1 和 foo2, 结果就是 foo1 和 foo2 指向同一个对

在 Python 中, 变量更像一个指针指向装变量值的盒子。 对不可改变类型来说, 你无法

改变盒子的内容, 但你可以将指针指向一个新盒子。每次将另外的数字赋给变量的时候,实际

上创建了一个新的对象并把它赋给变量.(不仅仅是数字,对于所有的不可变类型,都是这么回

事)

Tab自动补全

>>> import rlcompleter,readline

>>>readline.parse_and_bind(‘tab: complete‘)

Python 学习笔记,布布扣,bubuko.com

Python 学习笔记

上一篇:【学习笔记】Python+NumPy


下一篇:java数组