7)重要的数据结构
list: list1 = [1,2,3]
列表综合: listtwo = [i*2 for i in list1 if 1 > 1] //lsittwo[4,6]
array(不可变): array = (1,2,3)
字典: d = {key1 : value1, key2 : value2 } d[key1] = value1这样赋值.
注:
list and array 可以做切片操作:如array[1:3] 返回的是1,2位置上的值
= 符号是一个引用,而非copy.如果要copy,必须要切行切片操作,如果a = b[:]
8)类的定义
class classname: //定义一个类
class classname(parentClassname): //继承一个类
self => this
一些特殊的方法:
__init__(self,...) 这个方法在新建对象恰好要被返回使用之前被调用。
__del__(self) 恰好在对象要被删除之前调用。
__str__(self) 在我们对对象使用print语句或是使用str()的时候调用。
__lt__(self,other) 当使用 小于 运算符(<)的时候调用。类似地,对于所有的运算符(+,>等等)都有特殊的方法。
__getitem__(self,key) 使用x[key]索引操作符的时候调用。
__len__(self) 对序列对象使用内建的len()函数的时候调用。
9)异常方面的知识
捕获:
try:
except: =>catch(c++)
else:
try:
finally:
无论如何都结束
定义:class Myexception(Exception):
抛出异常: raise => throw (C++)
10)特殊用法
lambda语句被用来创建新的函数对象,并且在运行时返回它们
例如:
def displaylambda(n):
return lambda s: s*n
tempFun = displaylambda(5)
print tempFun(4) //20
eval('3*7') // 计算表达式3*7 = 21
exec('print "hello me"') // 执行语句,输出hello me
好像两个不能嵌套使用,因为我试了exec('eval("3*7")'),结果是没有输出
assert() //用来断言
repr 取得对像的规划子符串
与eval 可以相反.eg: eval(repr(object)) = object
13) 注python 大小写敏感