Python2版本和Python3中目前已知有三个变化,在Python3中:
1.reduce函数需要from functools import reduce后才能使用
2.filter和map函数的结果现在需要列表化以后才是list,例如:list[filter(f,range[10])]
注:感觉直接使用列表表达式更简单
下面的总结及用法针对Python2版本:
高阶函数:函数本身可以作为参数传入函数,比如reduce,filter和map函数
闭包:内层函数引用外层变量,然后返回内层函数的情况成为闭包(Closure)
匿名函数:map(lambda x:x*2 [1,2,2,4,5])
装饰器:运行时动态增加功能而不用修改原函数,本质是包装原函数成一个高阶函数,然后返回原函数。@语法极大的简化了代码,例如@log,@performance
打印调用时间的装饰器偏函数:functools.partial可以把一个参数多的函数变成一个参数少的新函数,实质是通过固定某个参数的默认值形成一个新函数,例如下面的例子就是不区分大小写的sort方法:
使用偏函数完成的忽略大小写的sorted方法包和模块:
解决命名空间冲突,包与目录的区别在于包的目录下必须有
__init__.py文件
面向对象编程:
类名一般以大写字母开头,例如Person(object): 括号里面是父类,多个父类用逗号分隔
__表示私有属性,不允许外部访问(JAVA用public private protect等关键字来标注)
_下划线实际允许外部调用,但是约定俗成,这个属性不应被外部访问
但是__xxx__表示的是特殊的属性,可以被外部调用,比如 print函数会调用__str__方法
__init__方法类似于JAVA的构造器,在对象实例化时调用
在class中定义的全部是实例方法,实例方法第一个参数self是实例本身。
要在class中定义类方法,需要通过标记一个@classmethod,该方法将绑定到类上,比如:
类和实例:
继承,多态,多重继承
定制类:
特殊方法:
__cmp__ cmp函数调用
__str__print函数
__ repr__repr函数
__call__
网友评论