学习笔记系列——函数式编程

人生苦短,我用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装饰器检查保证没有重复值

你可能感兴趣的:(学习笔记系列——函数式编程)