我的Python3学习笔记(2):python函数式编程
来源:互联网 发布:知屋金融官网 编辑:程序博客网 时间:2024/06/05 07:39
函数式编程
深拷贝
>>>from copy import deepcopy>>>d = {}>>>d['names'] = ['Alfred', 'Bertrand']>>>c = d.copy()>>>dc = deepcopy(d)>>>d['names'].append('Clive')>>>c{'names':['Alfred', 'Bertrand', 'Clive']}>>>dc{'names': ['Alfred','Bertrand']}
简单函数定义
deffibs(num): result = [0, 1] for i in range(num-2): result.append(result[-2] +result[-1]) return result
文档字符串
在函数的定义def后面使用''来定义一个文档字符串,这样可以在存续中访问。
定义:
defsquare(x): 'Calculates the square of thenumber x.' return x*x
使用:
square.__doc__
或者使用help函数。
help(square)
多参数
多参数的时候可以传递0个或则多个值给函数。
元组
defprint_params_2(title, *params): print title print params
使用
>>>print_params_2('Params:', 1, 2, 3)
Params:
(1,2, 3)
可以看到就不用其他的数据结构才能传递参数了。
字典
defprint_params_4(x, y, z=3, *pospar, **keypar): print x, y, z print pospar print keypar
使用
>>>print_params_4(1, 2, 3, 5, 6, 7, foo=1, bar=2)
1 23
(5,6, 7)
{'foo':1, 'bar': 2}
参数反转
使用*和**可以把多个参数打包成一个数据结构;如果把这个符号作用于字典和元组的时候也可以得到相反的效果。
1,反转一个元组可以用来传递参数。
defadd(x, y): return x + y
>>>add(*params)
3
2,反转一个字典也可以用来给一噶函数传递参数,只是字典的键会自动变成函数的参数名。也就是不起作用。
生成器
一个生成器就是一个特殊的函数,每次调用它都会放回下一个数字。事实上生成器表现的想一个迭代器,只不过这儿的迭代器的对象是一个函数。
例如:
nested= [[1, 2], [3, 4], [5]]defflatten(nested): for sublist in nested: for element in sublist: yield element>>>nested = [[1, 2], [3, 4], [5]]>>>for num in flatten(nested):printnum...12345
注意:生成器函数已经有默认的返回值——生成器了,你不能再另外给一个返回值;对,即使是return None也不行。但是它可以使用空的return语句结束。
函数式编程特性
关键字参数
在参数传递的时候可以使用函数定义时的参数名。
defhello_1(greeting, name):print'%s, %s!' % (greeting, name) 这时候参数的顺序就不成问题了。>>>hello_1(greeting='Hello', name='world')Hello,world!另一个:>>>hello_1(name='world', greeting='Hello')Hello, world!
默认参数
闭包
Python中可以在函数中声明另外一个函数并且返回,这个比起Ruby来说更加自然一点。因为在Ruby中必须用匿名函数来实现这个特性。
defmultiplier(factor): def multiplyByFactor(number): return number*factor return multiplyByFactor
- 我的Python3学习笔记(2):python函数式编程
- 我的Python3学习笔记(1):python基础
- Python学习笔记2:函数式编程
- Python3学习笔记(5)——函数和函数式编程
- 我的python学习笔记.函数
- 【python学习笔记】Python函数式编程
- 我的Python3学习笔记(3):面向对象
- 我的学习python3入门笔记(一)
- python学习笔记(四) - 函数式编程
- Python学习笔记<函数式编程>
- 【Python学习笔记】函数式编程
- "Python"学习笔记----函数式编程
- Python学习笔记:函数式编程工具
- Python3.X之函数式编程笔记
- Python学习笔记11:Python函数和函数式编程
- Python学习笔记(四)函数式编程
- Python学习笔记(11)-函数式编程
- Python学习笔记(四)--函数式编程
- 如何覆写java中的equals和hashcode方法
- DevExpress ASPxUploadControl 使用示例
- Linux strip命令的用法
- 改善PHP的运行效率
- tomcat的编码设置
- 我的Python3学习笔记(2):python函数式编程
- linux下设置ssh无密码登录
- 2013年10月 TIOBE 编程语言排行榜单
- ajax提交-----URL中文参数传递后的乱码问题
- android 系统软件 /system/app
- 开始CSDN之旅
- Compiling Lua with Visual Studio 2010
- 控制iOS 7中的状态栏
- POCO库中文编程参考指南(10)如何使用TCPServer框架?