人生苦短,我用python
高阶函数:一个函数接收另一个函数作为参数,这种函数称为高阶函数
map(函数,迭代对象)
reduce()结果和下一个元素做累积计算
fliter()过滤序列 ----通过判断返回值为True或False-----需使用list返回结果
面向对象编程——object oriented programming
类和实例:
__init__(self,,)第一个参数必须为self,表示创建的实例本身
访问限制:在变量名前加__ 变为私有变量 例如__x __name
通过 def set_name():
self.__name = name 可以从外部改变参数
增加条件避免传入的参数无效
以双下划线开头结尾的为特殊变量可以访问
继承、多态
判断一个变量是否为某个类型:is instance(变量,类型)
__slots__()限制class能添加的属性,只对当前实例起作用,对继承的子类无效
@property将方法变为属性——实用
@property本身又创建了另一个装饰器@score.setter,负责把一个setter方法变成属性赋值
加.setter为可读写,不加则为只读
无需调用函数而直接调用属性
返回的值需设置为self._xx 同访问限制的__区别
多重继承---可继承多个类 Mixin机制
__str__()返回字符串
__repr__()调试服务
__repr__ = __str__
__iter__()返回一个迭代对象
__getitem__()获得任意对象 int or slice
__setitem__()把对象作为list or dict
__getattr__()动态返回一个属性 可以raise AttributeError判断不存在该属性
__call__()直接在实实例本身上调用
用callable()查看能否调用
实现 :无论API怎么变,SDK都可以根据URL实现完全动态的调用,不随API的增加而改变
@unique装饰器检查保证没有重复值