Python3之函数对象
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python3之函数对象相关的知识,希望对你有一定的参考价值。
函数对象
函数(Function)作为程序语言中不可或缺的一部分,但函数作为第一类对象(First-Class Object)却是 Python 函数的一大特性。
那到底什么是第一类对象(First-Class Object)呢?
在 Python 中万物皆为对象,函数也不例外,函数作为对象可以赋值给一个变量、可以作为元素添加到集合对象中、可作为参数值传递给其它函数,还可以当做函数的返回值,这些特性就是第一类对象所特有的。
1.函数身为一个对象,拥有对象模型的三个通用属性:id、类型、和值。
#!/usr/bin/env python # -*- coding:utf-8 -*- def foo(): print(‘from foo‘) foo() print(id(foo)) print(type(foo)) print(foo)
输出
from foo 4406808360 <class ‘function‘> <function foo at 0x106aa8f28>
2.函数可以被引用,即函数可以赋值给一个变量
还可以把该函数赋值给更多的变量,唯一变化的是该函数对象的引用计数不断地增加,本质上这些变量最终指向的都是同一个函数对象。
#!/usr/bin/env python # -*- coding:utf-8 -*- def foo(): print(‘from foo‘) foo() func=foo #引用,赋值 print(foo) print(func) func()
输出
from foo <function foo at 0x10eed8f28> <function foo at 0x10eed8f28> from foo
3.函数可以当做参数传递
输出
<function foo at 0x1047eff28> from foo
4.函数可以作返回值
函数接受一个或多个函数作为输入或者函数输出(返回)的值是函数时,我们称这样的函数为高阶函数
输出
<function foo at 0x107f29f28> from foo
5.函数可以当作容器类型的元素
容器对象(list、dict、set等)中可以存放任何对象,包括整数、字符串,函数也可以作存放到容器对象中
输出
from foo <function foo at 0x10997ef28> from foo
6.函数还可以嵌套
函数嵌套的定义
输出
from f2 from f3
应用
def get(text): def clean(t): #2 return t[1:] new_text = clean(text) #1 return len(new_text) print(get(‘python‘))
输出
5
以上是关于Python3之函数对象的主要内容,如果未能解决你的问题,请参考以下文章
我的Android进阶之旅NDK开发之在C++代码中使用Android Log打印日志,打印出C++的函数耗时以及代码片段耗时详情