python学习笔记(2)

来源:互联网 发布:神机妙算计价软件 编辑:程序博客网 时间:2024/04/20 05:26

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 大小写敏感