首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在python中打开一个闭包?

如何在python中打开一个闭包?
EN

Stack Overflow用户
提问于 2019-08-12 05:31:31
回答 5查看 164关注 0票数 6

我遇到了以下面试问题,不知道如何解决:

代码语言:javascript
运行
AI代码解释
复制
def cons(a, b):
    def pair(f):
        return f(a, b)
    return pair

给定一对,例如cons(6,8),我被要求分别返回ab,例如在本例中分别返回6和8。

意思是,举个例子,

代码语言:javascript
运行
AI代码解释
复制
def first(pair):
    pass
    #would return pair's `a` somehow

def second(pair):
    pass
    #would return pair's `b` somehow

如何做到这一点呢?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2019-08-12 06:04:32

您可以尝试:

代码语言:javascript
运行
AI代码解释
复制
pair = cons(6, 8)

def first(pair):
    return  pair(lambda x, y: x)

def second(pair):
    return  pair(lambda x, y: y)

print(first(pair))
print(second(pair))

# ouput:
# 6
# 8
票数 2
EN

Stack Overflow用户

发布于 2019-08-12 05:38:51

函数cons接受两个参数ab,并返回一个接受一个参数f的函数。返回的函数是一个闭包,因为它包含对ab的引用,否则当cons返回时,这两个引用就会超出范围。

返回的函数接受一个函数参数,使用ab调用它,然后返回结果。

例如,如果您这样做:

代码语言:javascript
运行
AI代码解释
复制
func = cons(6, 8)

然后,您可以执行以下操作:

代码语言:javascript
运行
AI代码解释
复制
def g(a, b):
    return a

func(g)

这将返回6。类似地,如果您定义g返回b,那么func将返回8

票数 2
EN

Stack Overflow用户

发布于 2019-08-12 05:39:15

这样如何:

代码语言:javascript
运行
AI代码解释
复制
c = cons(6, 8)
a = c.__closure__[0].cell_contents
b = c.__closure__[1].cell_contents

print(a, b)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57456048

复制
相关文章
Python列表长度
确定列表长度 # 定义一个汽车品牌数组 cars = ['bmw', 'audi', 'benz'] # 输出列表长度 print('列表长度是:') print(len(cars)) 输出 列表长度是: 3
py3study
2020/01/10
1.4K0
列表长度与索引
借助llength命令可获取列表的长度(列表所包含的元素的个数,不难发现很多跟列表相关的命令都是以英文单词l(其大写为L)开头的)。图1显示列表a的长度为3。
Lauren的FPGA
2019/10/30
1.5K0
将列表分成指定长度的列表
在工作或参加面试过程中,经常遇到将一个列表,按指定长度分割成多个列表的问题。详细实现过程,看如下具体实例:
TalkPython
2019/05/24
2.9K0
列表视图(ListView和ListActivity)
在ListView中显示网络图片  ImageView 类虽然有一个 setImageUri 方法,但不能直接接受一个由网络地址生成的uri作为参数从而显示图片,我们只好使用其 setImageBit
欢醉
2018/01/22
1.6K0
列表视图(ListView和ListActivity)
python 中如何查找列表长度
In this article, we will be unveiling techniques to find the length of a Python list. Finding the length actually means fetching the count of data elements in an iterable.
用户8418197
2022/01/09
2.7K0
定义索引长度错误「建议收藏」
#1089-incorrect prefix key;the used key part isn’t a string,the used length is longer than the key part,or the storage engine doesn’t support unique prefix keys
全栈程序员站长
2022/07/11
6610
定义索引长度错误「建议收藏」
Django学习-第十二讲:视图高级(二)类视图、模板视图、列表视图、和分页
在写视图的时候,Django除了使用函数作为视图,也可以使用类作为视图。使用类视图可以使用类的一些特性,比如继承等。
小海怪的互联网
2019/10/08
1K0
【说站】python如何获取列表的长度
Python在对内置的数据类型使用len()方法时,实际上是会直接的从PyVarObject结构体中获取ob_size属性,这是一种非常高效的策略。
很酷的站长
2022/11/24
4.2K0
【说站】python如何获取列表的长度
两种方法获取python列表长度
Python是一种非常具有表现力的语言,它提供了不同的结构来简化开发人员的工作。该列表是python提供的最受欢迎的数据结构之一。在常规工作流程中,我们在列表中添加元素或从列表中删除元素。但是在这种浮动的情况下,我们需要获取列表的长度。我们如何获得列表的长度或大小?在本教程中,我们将研究获取长度列表的不同方法。
用户8418197
2022/01/09
2.3K0
Django 2.1.7 视图 - 自定义404错误、500错误
上一篇Django 2.1.7 模型管理器 models.Manager 以及 元选项
Devops海洋的渔夫
2019/06/18
2.1K0
Django 2.1.7 视图 - 自定义404错误、500错误
【译】在列表视图中处理空值
本篇文章主要针对两类开发者。第一个是曾遇到过IllegalArgumentException: Path must not be empty问题的开发者。第二个则是当ListView使用了未被完整加载的图像,应用程序仍能正确运转的开发者们。
小鄧子
2018/08/20
1.2K0
iOS实例——滑动列表展现/隐藏顶部视图
项目中需要一个效果:下滚列表时顶部的自定义视图不移动,上移时隐藏顶部视图,提高列表的展现范围。在此基础上海加了一个隐藏列表时的动态渐入渐出效果,如下:
Cloudox
2021/11/23
1.9K0
iOS实例——滑动列表展现/隐藏顶部视图
错误页面定制与视图传递多个参数
一、错误页面定制 视图函数 <span class="hljs-meta">@app.errorhandler(404)</span> <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">page_not_found</span><span class="hljs-params">(e)</span>:</span> <span class="hljs-keyword">
星哥玩云
2022/09/14
1K0
Android开发笔记(三十八)列表类视图
AdapterView顾名思义是适配器视图,Spinner、ListView和GridView都间接继承自AdapterView,这三个视图都存在多个元素并排展示的情况,所以需要引入适配器模式。 适配器视图的特点有: 1、定义了适配器的设置方法setAdapter,以及获取方法getAdapter。适配器用于传入视图展示需要的相关数据。 2、定义了一个数据观察者AdapterDataSetObserver,用于在列表数据发生变化时,可以通过notifyDataSetChanged方法来更新视图。 3、定义了单个元素的点击、长按、选中事件。其中点击方法为setOnItemClickListener,点击监听器为OnItemClickListener;长按方法为setOnItemLongClickListener,长按监听器为OnItemLongClickListener;选中方法为setOnItemSelectedListener,选中监听器为OnItemSelectedListener。
aqi00
2019/01/18
2.4K0
21. Django 2.1.7 视图 - 自定义404错误、500错误
上一篇Django 2.1.7 模型管理器 models.Manager 以及 元选项
Devops海洋的渔夫
2022/01/17
1.1K0
21. Django 2.1.7 视图 - 自定义404错误、500错误
HashMap的默认初始长度是多少?为什么?
HashMap的默认初始长度是16,自动拓展和手动初始化时,长度必须是2的幂,即2^n (每次扩容都是以2的整数次幂扩容
终有救赎
2023/10/16
5730
为什么 SwiftUI 的视图使用结构体
如果您曾经为 UIKit 或 AppKit(Apple 的 iOS 和 macOS 原始用户界面框架)编程,您会知道它们使用类而非结构体来构造视图。SwiftUI 并非如此:我们更喜欢将结构体用于整体视图,这有两个原因。
Swift社区
2021/11/26
2.4K0
为什么 SwiftUI 的视图使用结构体
为什么SwiftUI的视图使用结构体?
如果您曾经为UIKit或AppKit(Apple的iOS和macOS原始用户界面框架)编程,您会知道它们使用类而非结构体来构造视图。SwiftUI并非如此:我们更喜欢将结构体用于整体视图,这有两个原因。
韦弦zhy
2020/03/26
3.2K0
odoo 给form表单视图内联列表添加按钮
odoo14\custom\estate\models\estate_customer.py
授客
2023/02/26
1.5K0
odoo 给form表单视图内联列表添加按钮
点击加载更多

相似问题

NullPointerException仍有错误

20

UISearchBar textDidChange创建错误:重用这些视图后仍有可见视图:{ (null) = (null);}

22

列表理解长度错误

33

禁用ARC仍有错误

14

将数组状态长度设置为0,但绑定列表仍有一个元素

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文