python函数之第一类对象
目录
第一类对象(英语:First-class object)在计算机科学中指可以在执行期创造并作为参数传递给其他函数或存入一个变数的实体。将一个实体变为第一类对象的过程叫做“物件化”(Reification)。
1、函数名字是对函数的引用。python中所有的东西都是对象,所以函数名字是函数对象的引用
>>> def foo():
print('in foo')
>>> foo
<function foo at 0x00000201F328AD90>
2、函数作为第一类变量可以赋值给其他变量
>>> def foo():
print('in foo')
>>> foo
<function foo at 0x00000201F328AD90>
>>> f = foo
>>> foo()
in foo
>>> f()
in foo
>>> id(f), id(foo)
(2207397752208, 2207397752208)
>>> f
<function foo at 0x00000201F328AD90>
3、函数作为第一类对象,可以作为参数传递
>>> def foo():
a = 10
return a
>>> print(foo())
10
4、函数作为第一对象,可以作为函数的返回值。
>>> def foo():
def inner():
print('我是函数的返回值')
return inner # 函数名可以返回
>>> ret = foo()
>>> ret() # 在函数外面访问了函数内部的函数
我是函数的返回值
5、函数名还可以作为容器类的元素
>>> def foo1():
print('我是函数一')
>>> def foo2():
print('我是函数二')
>>> def foo3():
print('我是函数三')
>>> def foo4():
print('我是函数四')
>>> list_foo = [foo1, foo2, foo3, foo4]
>>> for i in list_foo:
i()
我是函数一
我是函数二
我是函数三
我是函数四
python函数之第一类对象的更多相关文章
- 正确理解Python函数是第一类对象
正确理解 Python函数,能够帮助我们更好地理解 Python 装饰器.匿名函数(lambda).函数式编程等高阶技术. 函数(Function)作为程序语言中不可或缺的一部分,太稀松平常了.但函数 ...
- 函数的第一类对象,f格式化,迭代器以及递归
函数名的第一类对象及使用,f格式化以及迭代器 1.函数的第一类对象 第一类对象 --特殊点 1.可以当作值被赋值给变量 def func(): print(1) a = func a() 2.可以当作 ...
- Javascript中的"函数是第一类对象(first-class object)"
本身这句话很好解释,函数有两个主要特点,援引自 陈新 译的<JavaScript模式>: 1.函数是第一类对象: 函数可以在运行时动态创建,还可以在程序执行过程中创建. 函数可以分配变量, ...
- python之路--第一类对象,函数名,变量名
一 . 第一类对象 函数对象可以像变量一样进行赋值 , 还可以作为列表的元素进行使用 可以作为返回值返回 , 可以作为参数进行传递 def func(): def people(): print('金 ...
- python高级(五)—— python函数(一等对象)
本文主要内容 一等对象 普通函数 & 高阶函数 可调用对象 & 自定义可调用类型 函数内省 函数注释 python高级——目录 文中代码均放在github上:https://githu ...
- 学习11:内容# 1.函数名第一类对象及使用 ***** # 2.f格式化 *** # 3.迭代器 **** # 4.递归 ****
目录 1.第一类对象 -- 特殊点 2.f.格式化 Python3.6版本以上才能够使用 3.迭代器 迭代 : 器 : 工具 4.递归 1.第一类对象 -- 特殊点 1.可以当做值被赋值给变量 def ...
- python函数默认参数为可变对象的理解
1.代码在执行的过程中,遇到函数定义,初始化函数生成存储函数名,默认参数初识值,函数地址的函数对象. 2.代码执行不在初始化函数,而是直接执行函数体. 代码实例 这要从函数的特性说起,在 Python ...
- python 函数对象、函数嵌套、名称空间与作用域、装饰器
一 函数对象 一 函数是第一类对象,即函数可以当作数据传递 1 可以被引用 2 可以当作参数传递 3 返回值可以是函数 3 可以当作容器类型的元素 二 利用该特性,优雅的取代多分支的if def fo ...
- Python 函数对象-函数嵌套-名称空间与作用域-闭包函数
今日内容: 1. 函数对象 函数是第一类对象: 指的是函数名指向的值可以被当中数据去使用 1.可以被引用 2.可以当做参数传给另一个函数 3.可以当做一个函数的返回值 4.可以当做容器类型的元素 2. ...
随机推荐
- (转载)【Unity3D学习】获取鼠标点击所对应的GameObject
刚开始学习Unity 3D,新手遇到的坑都是泪对自由的抗争.直入主题~ 首先,为GameObject需要添加组件“Box Collider”. 然后,在脚本中的Update方法中添加如下代码. if( ...
- Learning-Python【31】:操作系统基础知识
什么是操作系统 计算机系统由硬件和软件两部分组成.操作系统(OS,Operating System)是配置在计算机硬件上的第一层软件,是对硬件系统的首次扩充.它在计算机系统中占据了特别重要的地位:而其 ...
- Go 函数方法
在 Go 语言中,函数和方法不太一样,有明确的概念区分.其他语言中,比如 PHP 函数就是方法,方法 就是函数,但在 Go 语言中,函数是不属于任何结构体.类型的方法,也就是说函数是没有接收者的:而方 ...
- VS工作目录,输出目录
C++项目,解决方案总文件夹下就只包含解决方案配置文件sln和一个项目总文件夹和一个Debug文件夹以及一个Release文件夹(共四个东东,其中Debug和Release文件夹中存放最终生成的结果e ...
- _quest_mod
该功能实现对任务的优化,设定接受任务的条件,比如VIP等级几或者军衔多少持有何种物品才可以接受任务,同时可以配置任务的随机奖励及几率,以上修改都会在任务文本中体现.还支持任务传送功能,接完任务后,可和 ...
- Java Deque 队列 栈
垃圾JDK啊 Deque这个接口,既承担着FIFO的任务,即队列,也承担着LIFO的任务,即栈 目前jdk里面实现了这个接口的类有两个,一个是ArrayDeque,另一个是LinkedList 但是由 ...
- submit form to convert to a Java Bean model.
实体类中无需构造函数. Since we haven’t specified a constructor, Java will provide a default constructor that w ...
- http content-type 与 java后端处理
http中的常用的content-type有: application/x-www-form-urlencoded;charset=UTF-8 传递表单类数据 application/json;ch ...
- jQuery中的 $.ajax的一些方法
1. $(document).ajaxConplete(function(){}) 1.8版本之后,只能绑定到document元素上:1.8版本之前,可以帮到其他元素上 当$.ajax执行完成之后,执 ...
- 从rnn到lstm,再到seq2seq(一)
rnn的的公式很简单: 对于每个时刻,输入上一个时刻的隐层s和这个时刻的文本x,然后输出这个时刻的隐层s.对于输出的隐层s 做个ws+b就是这个时刻的输出y. tf.scan(fn, elems, i ...