python学习---3
2015-12-21 13:26
639 查看
1)高阶函数
变量可以指向函数 abs----变量名,函数的地址
2)函数名也是变量
3)可以传入函数
4)map/reduce/filter/sorted
map函数接收两个变量,一个是函数,一个是序列,map将传入的函数一次作用于序列的每一个元素,将新的结果作为序列返回
5)函数作为返回值
这种函数其实就称之为“闭包函数”。
每次循环都创建一个新函数
返回的函数并没有立刻执行,而是直到调用了
当f2的时候,它又创建了一个新函数,与之前的f1有不同的内存空间,所以fs[]是一个新的空的[]
使用关键字:lambda
:表达式
7) 装饰器
想到了junit,有点类似。可以实现多层嵌套。
以上代码相当于执行了
所以
8)偏函数
本文出自 “ehealth” 博客,谢绝转载!
变量可以指向函数 abs----变量名,函数的地址
2)函数名也是变量
3)可以传入函数
4)map/reduce/filter/sorted
map函数接收两个变量,一个是函数,一个是序列,map将传入的函数一次作用于序列的每一个元素,将新的结果作为序列返回
#-*- coding:utf-8-*- def f(x): return x*x l=map(f,[1,2,3,4,5,6]) print lreduce函数也是接收2个参数,一个是函数,一个是序列。不同的是,这个函数必须要有2个参数。如:f(((x1,x2),x3),x4) 结果是只返回一个值
#-*- coding:utf-8-*- def f(x,y): return x+y l=reduce(f,[1,2,3,4,5]) print lfilter函数是过滤序列,也是接收一个函数和一个序列,将传入的函数作用于每一个元素,不同的是根据返回值是true或者false来决定是否保留该元素,最后输出一个序列
#-*- coding:utf-8-*- def f(n): return n%2==1 l=filter(f,[1,2,3,4,5,6]) print lsorted排序函数,内置的sorted可以自动的对序列进行排序。也可以我们自己定义一个函数来进行排序
#-*- coding:utf-8-*- def f(x,y): u1=x.upper() u2=y.upper() if u1<u2: return -1 if u2>u1: return 1 return 0 l=sorted(['bob','abort','zoo','Credit'],f) print lNote:参数的顺序很重要,调换顺序就不行了。
5)函数作为返回值
这种函数其实就称之为“闭包函数”。
每次循环都创建一个新函数
#-*- coding:utf-8-*- def count(): fs=[] for i in range(1,4): def f(j): def g(): return j*j return g fs.append(f(i)) return fs f1,f2,f3=count()当f1的时候,它创建了一个新函数,然后返回出来
返回的函数并没有立刻执行,而是直到调用了
f()才执行
当f2的时候,它又创建了一个新函数,与之前的f1有不同的内存空间,所以fs[]是一个新的空的[]
>>> f1 <function g at 0x02A37B30> >>> f2 <function g at 0x02A37AF0> >>> f3 <function g at 0x02A37B70>6)匿名函数
使用关键字:lambda
lambda x: x*xx 参数
:表达式
7) 装饰器
想到了junit,有点类似。可以实现多层嵌套。
#-*- coding:utf-8-*- def log(func): def wrapper(*args,**kw): print "You can do sothing in here." return func(*args,**kw) return wrapper @log def f(*args): return args[0]+args[1]复习:*args属于可变参数,接收的是一个tuple,**kw接收的是一个dict,有key and value
以上代码相当于执行了
now = log(now)此时 now--->wrapper:now.__name__='wrapper'
所以
@functools.wraps(func)把函数的名字给改回来
#-*- coding:utf-8-*- import functools def log(func): @functools.wraps(func) def wrapper(*args,**kw): print "You can do sothing in here." return func(*args,**kw) return wrapper @log def f(*args): return args[0]+args[1] print f.__name__@functools.wraps(func) 要放在声明了func后面。
8)偏函数
functools.partial的作用就是,把一个函数的某些参数给固定住(也就是设置默认值),返回一个新的函数,调用这个新函数会更简单。
本文出自 “ehealth” 博客,谢绝转载!
相关文章推荐
- 【详解】Python带历史数据写Excel表
- 查找算法—斐波那契查找算法分析与实现(Python)
- 利用Python写的xls转sqlite3的导表工具
- Operations on basic server (by Python)
- 【Python】Python读取文件夹下的所有文件
- python中文编码
- python 代码中加入日志系统
- Python --标准库 存储对象 (pickle包,cPickle包)
- Python Requests和urllib两种方式下载网页到本地
- 微信公众帐号自定义菜单创建的python脚本
- 测试python代码在博客的显示
- Python -- 标准库 文件管理 (部分os包,shutil包)
- Python Network Programming(5)---套接字超时时间
- Python Bayes
- 近期用到的python知识列表
- ubuntu14.04LTS 搭建 python2.7+Qt 5.5+PyQt5开发环境
- dblp 数据集之python lxml解析
- python下载网页源码 写入文本
- python3 抓取必应bing首页图片作为桌面背景
- 利用Python脚本一键备份Mysql数据库