Python 函数的高级用法
来源:互联网 发布:淘宝贷款怎么回事 编辑:程序博客网 时间:2024/06/14 19:44
简述
在 Python 中,函数是一个一等公民(first-class citizen)。这意味着,函数与任何其他对象(例如:整数、字符串、列表)一致,既可以动态地创建或销毁,也可以传递给其他函数,或作为值进行返回。
- 简述
- 将函数绑定到不同的名称
- 将函数作为参数
- 将函数作为返回值
版权所有:一去丶二三里,转载请注明出处:http://blog.csdn.net/liang19890820
将函数绑定到不同的名称
Python 中的一切皆对象,我们定义的名称仅仅是与这些对象绑定的标识符。函数也不例外,它们也是对象,同样可以被绑定到不同的名称。
>>> def greet(msg):... print(msg)... >>> greet # 输出 greet 的内存地址<function greet at 0x7f38327abae8>>>> >>> f = greet # 将 greet 的内存地址当做值赋值给变量 f>>> f # 输出 f,其实就是输出 greet 的内存地址<function greet at 0x7f38327abae8>>>> >>> f('Hello') # 等同于 greet('Hello')Hello
可以看出,greet 和 f 指的是同一个函数对象。
注意: 函数名在不带小括号(()
)时,表示的是函数的内存地址。
将函数作为参数
在 Python 中,将其他函数作为参数的函数称为高阶函数。如果使用过 map()、filter() 和 reduce() 之类的函数,那么肯定知道这一点。
下面,我们定义三个函数:add() - 求和,subtract() - 求差,operate() - 作为高阶函数。
>>> def add(x, y): # 求和... return x + y... >>> >>> def subtract(x, y): # 求差... return x - y... >>> >>> def operate(func, x, y): # 高阶函数 - 将函数作为参数... result = func(x, y)... return result... >>>
函数调用很简单:
>>> operate(add, 5, 3)8>>> >>> operate(subtract, 5, 3)2
这样,就可以将函数对象 add 和 subtract 当做 operate() 的参数进行传递了,使用起来非常方便。
将函数作为返回值
函数是一个对象,所以可以作为某个函数的返回值。
这里涉及到一个概念 - Python 嵌套函数
来看一个简单的求和函数,对数字 1- n 相加:
>>> def outer(): # 封闭函数... def inner(n): # 嵌套函数... sum = 0... for i in range(1, n):... sum += i... return sum... return inner # 返回一个函数对象... >>>
当每次调用封闭函数时,都会创建一个嵌套函数的新实例:
>>> f = outer()>>> f<function outer.<locals>.inner at 0x7f38327ab9d8>>>> >>> f2 = outer()>>> f2<function outer.<locals>.inner at 0x7f38327ab950>
显然,f 和 f2 不同,这是因为 inner() 是在执行 outer() 期间被定义的,所以第二次的创建对第一次没有影响。
当调用 f(n) 时,才会真正地计算求和结果:
>>> f(5)10>>> >>> f2(10)45
阅读全文
0 0
- Python 函数的高级用法
- python的高级用法 -- namedtuple
- Python内置函数int()高级用法
- Python内置函数max()高级用法
- sscanf函数的高级用法
- sscanf函数的高级用法
- sscanf函数的高级用法
- sscanf函数的高级用法
- sscanf函数的高级用法
- sscanf函数的高级用法
- sscanf函数的高级用法
- sscanf函数的高级用法
- sscanf函数的高级用法
- sscanf函数的高级用法
- sscanf函数的高级用法
- sscanf函数的高级用法
- sscanf函数的高级用法
- sscanf函数的高级用法
- javascript节点的操作 创建、添加、移除、移动、复制
- ListView id的使用
- Git Your branch is ahead of 'origin/master' by X commits解决方法
- html常规写法
- hashmap 深入分析 转载AlphaWang 博主的 但是写的真的很好。
- Python 函数的高级用法
- Elasticsearch的distinct项查询(去重查询)
- 小测验:解密文件——题解
- 617. Merge Two Binary Trees
- SQL大全(二)
- Linux添加服务到开机自动启动
- hive sql解决关联条件中不等值连接问题及累计值的计算
- 原码、反码、补码
- 问题 bug