Python基础学习Ⅱ
1.py函数式编程
不是纯函数式编程,允许有变量。支持高阶编程,函数也可以作为变量传入。支持闭包。支持有限数量的匿名函数。
2.高阶函数
变量可以指向函数。
函数名其实是指向函数的变量。
高阶函数是能接受函数做参数的函数。
3.常见的高阶函数
(1)map()
使用方法:map(f,sequence)。
作用:返回每一个元素都经过f函数的结果sequence。
(2)reduce()
使用方法:reduce(f,sequence,[n0])。
作用:f是两参数一返回的函数,通过迭代sequence里面的值,返回最终结果。
(3)filter()
使用方法:filter(f,sequence)。
作用:f为返回布尔值的函数,其筛选作用,返回筛选出的集合。
(4)sorted()
使用方法:sorted(sequence, [f])。
作用:返回排序后的集合。
注意:传入f的参数x和y,若x在前返回-1,若y在前染回1,相等返回0。
4.返回函数的函数
可通过'return 函数名'的方式返回一个函数。
5.闭包
闭包指内层函数应用了外层函数的变量。
6.匿名函数
格式:lambda 参数: 表达式
匿名函数只能有一个表达式,且该表达式就是返回值。
例子:sorted([1, 3,9, 5, 0], lambda x,y: -cmp(x,y))
7.装饰器使用
装饰器放在函数前,起到简化的作用。
@函数名,可实现新函数的覆盖.
@log,打印日志
@performance,检测性能
8.装饰器的编写
decorator是一个高阶函数,接收一个函数,返回一个新函数。
例子:def log(f):
def fn(*args, **kw):
print 'call ' + f.__name__ + '()...'
return f(*args, **kw)
return fn
装饰器可带参定义。
9.模块和包的使用
模块名即所在的py文件名。
包为py文件的文件夹。
引用别的包,模块使用import包名、模块名,使用时必须用写出包名和模块名。
注意:python包区别于普通目录的地方是,每个包下必须有__init__.py这个文件。
10.导入模块
使用'import 模块'直接导入模块。
使用'from 模块 import 函数'导入模块中的函数。
使用'from 模块 import 函数 as 别名'导入模块中的函数,并取别名。
动态导入模块使用‘try: 语句 except ImprotError: 错误时语句’格式。
安装第三方模块,使用'pipinstall 模块名'。
11.类
class关键字,与C++不同,类的属性可由实例直接创建。类的属性也可以随时修改和添加,修改后所有无冲突实例也随之修改。
创建格式'class 类名(所继承的类):'。
构造函数__init__(),第一个参数必须为self(可为其他名字),表示自身。
对属性访问权限的限制是用属性名,以双下划线开头的属性不能被外部访问,如'__name'。
类的实例方法定义,第一个参数必须为self。类方法的定义前需要加@classmethod,第一参数为cls。实例方法建立了实例才能应用,类方法直接就可以使用。
子类调用父类方法使用super()。
python可多重继承。
12.类的特殊方法
常用特殊方法:
print__str__
直接输入 __repr__
比较 __cmp__
个人 __len__
13.类的其它
(1)用装饰器将get和set函数变为属性
get函数前加@property,set前加@score.setter
(2)用__slots__指定类允许的属性列表
(3)用__call__函数将类变为可调用