第十一章函数和函数式编程
2016-04-04 19:06:04 4 举报
AI智能生成
登录查看完整内容
Python函数和函数式编程
作者其他创作
大纲/内容
函数和函数式编程
什么是函数
对程序逻辑进行结构化或过程化的一种编程方法
函数可以用来定义重用代码、组织和简化代码
定义函数
函数头:def关键字开始,后面接函数名以及形参并以冒号结束
函数体:包含一个定义函数做什么的语句块
返回值
带返回值的函数
不带返回值的函数
def hello():\u00A0 \u00A0 \u00A0 \u00A0 \u00A0 \u00A0 print 'hello world' res = hello()hello world res print resNone type(res)
调用函数
为了使用函数,必须调用它
当调用函数时,需要将实参传递给形参
用关键字参数调用函数
用位置参数调用函数
可变长度参数调用-(位置参数,关键字参数,非关键字可变长度参数,关键字可变长度参数)
参数调用,程序执行可视化
变量的作用域
一个变量的作用域和它寄住的名字空间相关
LEGB:查找顺序local--enclosing function locals--global--builtin
L-Local(function);函数内的名字空间
E-Enclosing function locals;外部嵌套函数的名字空间(例如closure)
G-Global(module);函数定义所在模块(文件)的名字空间
B-Builtin(Python);Python内置模块的名字空间
global
nonlocal (Python 3.x)
闭包
def counter(start_at=0):\u00A0 \u00A0 \u00A0count = [start_at]\u00A0 \u00A0 \u00A0def incr():\u00A0 \u00A0 \u00A0 \u00A0 \u00A0count[0] += 1\u00A0 \u00A0 \u00A0 \u00A0 \u00A0return count[0]\u00A0 \u00A0 \u00A0return incr
装饰器
作用
引入日志
增加计时逻辑来检测性能
给函数加入事务的能力
递归函数
直接或间接调用自身的函数
一个或多个基础情况(最简单的情况),被用来停止递归
每次递归调用都会简化原始问题,让他不断地接近基础情况,直到它变成基础情况
斐波那契数两种实现方法例子
某些情况下,对于其它方法很难解决的问题,使用递归就能给出一个很自然,直观,简单的解决方案
几个特殊函数
好处:程序更简洁
lambda
def add(x): return x+3 add(2)5 add = lambda x:x+3 add(2)5
filter
map
reduce
生成器
占用内存小,效率高
一个带有yield的函数,一种特殊的迭代器
生成器表达式
: my_generator = (x*x for x in range(4)) for i in my_generator:... \u00A0 \u00A0 print i...\u00A00149
收藏
0 条评论
回复 删除
下一页