1.repr和str的区别
repr创建一个字符串,以合法的python表达式的形式来表示值
str转换为用户更易理解的形式的字符串,str是一种类型
例如
print repr(1000L) 1000L print str(1000L) 1000
2.input 和raw_input
input会假设用户输入的是合法的python表达式,
raw_input会把用户所有的输入当做原始的数据,即字面上的
3.None,python中Null对象
4.python中布尔值为False的对象有None,False,值为0的数,整型 浮点 长整型0,0.0+0.0j,“”,[],(),{}z
没有__nonzero__()方法的对象默认值是true
5.标准类型对象身份比较运算符 is,is not
6.python会缓存简单整数
7.Python的长整型能表达的数值仅仅与你的机器支持的虚拟内存大小有关,与编译语言的长整型概念不一样
8.对整数的除法默认为地板除,浮点数执行真正的除法,//整除运算符
9.divmod返回(商,余)coerce(num1,num2)将num1,num2转换为同一类型
10.整数进制转换hex oct bin
11.ASCII转换ord(chr) chr(num) unichr(num)
12.random模块中的randrange(start,stop,step)随即返回之间的一项,uniform()和randint()一样,不过返回的是两者之间的一个浮点数,choice()随机返回序列中的一个元素
13.“string”.translate(string.maketrans('',''),del=' ')根据给出的表转换string字符,del是过滤的字符
14.那些可以改变对象值的可变对象的方法是没有返回值的如列表
15.dict()创建字典,参数是可迭代的,那么每个可迭代的元素必须成对出现
16.hash()可以用来判断某个对象是否可以做一个字典的键,字典的键必须是可哈希的
17.字典常用方法dict.clear() get(key,default=None) has_key(key) items() keys() values() iteritems() iterkeys() itervalues() setdefault(key,default=None) update(dict2),iteritems() iterkeys() itervalues() 返回惰性赋值的迭代器,以节省内存 数据集很大的情况下
18.字典必须每个键只能对应一个项,当键存在冲突,取最近的
19.集合对象是一组无序排列的课哈希的值
20。copy()方法比调用相应的工厂函数复制对象的副本要快
21.直接迭代序列比通过索引迭代要快
22.xrange()类似range()返回一个可迭代对象,用在for循环中
21.迭代器限制:不能向后移动,不能回到开始,也不能复制一个迭代器,想再次迭代同一个对象,只能创建另一个迭代器对象
22、itertools模块提供了各种有用的迭代器
23.字典和文件是两个可迭代的Python数据类型,字典的迭代器会遍历它的键
24.在迭代可变对象的时候修改它们并不是个好主意
25.iter() 和实现__iter__() __next__()来创建迭代器
26.生成器表达式是列表解析的一个扩展,在内存使用上更有效
27.sum(),max()参数可以使生成器如:
max(len(x.strip()) for i in f)
28.sys.argv命令行参数列表,第一个元素时程序的名称
29。os中文件目录访问函数和os.path中的路径访问函数
30.永久性存储模块pickle marshal可以用来转换存储Python对象,数据的序列化。shelve功能能更完善
31.__init__.py中加入__all__变量导入子包时指定导入的模块472
32.实例的__dict__仅有实例属性,没有类属性和特殊属性500
33.类和实例都是名字空间,类是类属性的名字空间,实例则是实例属性的名字空间
34.任何对实例属性的赋值都会创建一个实例属性(如果不存在)并对其赋值。使用实例属性来改变类属性是很危险的。修改类属性应该使用类名
35.__base__类属性 包含其父类的集合的元祖
36.重写__init__不会覆盖自动调用基类的__init__ p383
37. 从标准类型中派生类
不可变类型的例子
class RoundFloat(float):
def __new__(cls,val):
return super(RoundFloat,cls).__new__(cls,round(val,2))
38.issubclass()判断一个类是否是另一个类的子类
39.isinstance()判断一个对象是否是另一个类的实例
40.hasattr(),getattr(),setattr(),delattr()
41.super(type[,obj]) super是一个工厂函数,它创造了一个super object,为一个给定的类使用__mro__去查找相应的父类
42.vars([obj])返回对象存储于__dict__的属性和值的字典,没有参数和locals()一样
43.实现授权关键点是覆盖__getattr__()方法,在代码中包含一个对getattr()内建函数的调用,其工作方式是当搜索一个属性时,任何局部的对象首先被找到,如果搜索失败了,则__getattr__()会被调用
44.新式类:__slots__类属性 类变量 是一个序列,有实例属性构成,任何试图创建一个不在__slots__中的名字的实例属性都将导致Attribute异常,防止用户随心所欲的添加实例属性,节约内存
45.新式类:__getattribute__()与__getattr__()的不同之处在于,当属性被访问时,它就一直可以被调用,而不限于不能找到的情况
46.描述符:表示对象属性的一个代理。描述符实际上可以是任何至少实现了三个特殊方法__get__()、__set__() __delete__()中的一个,这三个特殊方法充当描述符协议的作用。
49.property(fget=None,fset=None,fdel=None,doc=None)
50.元类 __metaclass__ 来定义某些类是如何被创建的,从根本上赋予你如何创建类的控制权。元类一般用于创建类
51.callable()确定一个对象是否可以通过函数操作符来(())调用
52.compile('code str','存放代码对象的文件的名字,通常为空串','eval/single/exec')允许在运行时刻迅速生成代码对象(字节代码预编译),然后就可以用exec 语句或内建函数eval()来执行这些对象或者对他们进行求值
53.input()相当于eval(raw_input())
...