Python定义匿名函数,以及如何捕获变量值?
定义匿名函数问题
你想为sort()操作创建一个很短的回调函数,但又不想用def去写一个单行函数,而是希望通过某个快捷方式以内联方式来创建这个函数。解决方案
当一些函数很简单,仅仅只是计算一个表达式的值的时候,就可以使用lambda表达式来代替了。比如:addlambdax,y:xyadd(2,3)5add(hello,world)helloworld
这里使用的lambda表达式跟下面的效果是一样的:defadd(x,y):。。。returnxy。。。add(2,3)5
lambda表达式典型的使用场景是排序或数据reduce等:names〔DavidBeazley,BrianJones,。。。RaymondHettinger,NedBatchelder〕sorted(names,keylambdaname:name。split()〔1〕。lower())〔NedBatchelder,DavidBeazley,RaymondHettinger,BrianJones〕讨论
尽管lambda表达式允许你定义简单函数,但是它的使用是有限制的。你只能指定单个表达式,它的值就是最后的返回值。也就是说不能包含其他的语言特性了,包括多个语句、条件表达式、迭代以及异常处理等等。你可以不使用lambda表达式就能编写大部分python代码。但是,当有人编写大量计算表达式值的短小函数或者需要用户提供回调函数的程序的时候,你就会看到lambda表达式的身影了。
匿名函数捕获变量值问题
你用lambda定义了一个匿名函数,并想在定义时捕获到某些变量的值。解决方案
先看下下面代码的效果:x10alambday:xyx20blambday:xy
现在问你,a(10)和b(10)返回的结果是什么?如果你认为结果20和30,那么你就错了:a(10)30b(10)30
这其中的奥妙在于lambda表达式中的x是一个自由变量,在运行时绑定值,而不是定义时就绑定,这跟函数的默认值参数定义是不同的。因此,在调用这个lambda表达式的时候,x的值是执行时的值。例如:x15a(10)25x3a(10)13
如果你想让某个匿名函数在定义时就捕获到值,可以将那个参数值定义成默认参数即可,就像下面这样:x10alambday,xx:xyx20blambday,xx:xya(10)20b(10)30讨论
在这里列出来的问题是新手很容易犯的错误,有些新手可能会不恰当的使用lambda表达式。比如,通过在一个循环或列表推导中创建一个lambda表达式列表,并期望函数能在定义时就记住每次的迭代值。例如:funcs〔lambdax:xnforninrange(5)〕forfinfuncs:。。。print(f(0))。。。44444
但是实际效果是运行时n的值为迭代的最后一个值。现在我们用另一种方式修改一下:funcs〔lambdax,nn:xnforninrange(5)〕forfinfuncs:。。。print(f(0))。。。01234
通过使用函数默认值参数形式,lambda函数在定义时就能绑定到值。
盒马鲜生迭代精品店,做深仓储店与社区电商《零售圈》了解到,全国第二家,华东地区首家盒马精品店将于9月份在合肥弘阳广场开业。盒马内部称之为PLUS店和精品店,这种类型店铺此前在郑州市场饱受欢迎,周末一度出现限流购……
性能强劲红米Note11TPro上线,Note11惭愧价崩沦从产品定位来看,红米Note11TPro最大的卖点就是硬件性能。采用功耗和性能最均衡的第二旗舰处理器天机8100处理器,辅以LPDDR5UFS3。1的组合。除了核心处理器,和顶……
买得起车,却充不满电,新能源车主困在充电桩上极派Daily(ID:rancaijingapp)原创作者惠鹏权编辑饶霞飞对于不少新能源车主而言,买得起车,却困在了充电桩上。家在某一线城市的新能源车主……
京东左手五星,右手见福,头戴华冠《零售圈》通过企查查了解到,北京华冠商业科技发展有限公司(下称华冠超市)此前发生股权变更,江苏卓誉信息技术有限公司变更为企业法人,持股比例为100,北京利寰咨询管理合伙企业(有……
梵天公牛,死亡谷谷主都将出席皇家大赛?最终是期待还是失望?据报道,巨石强森将不会出现在即将到来的皇家大赛活动现场。WWE将于下周1月29日在密苏里州圣路易斯的美国中心的穹顶体育馆现场直播2022年《皇家大赛》,这是他们今年最受期待的节……
欧尚多地更名为大润发《零售圈》了解到,目前欧尚中国多家门店门头已经正式更换为大润发门头。标志着大润发与欧尚的整合进入实质性的一步。改造完成后,中国再无欧尚,所有欧尚将成为大润发统一标识。1多……
咖啡品牌时萃SECRE今年门店数量将达50家据天眼查平台显示,精品咖啡品牌时萃SECRE于2021年7月27日完成近亿元新一轮融资,投资方为博将资本和凡创资本。其中凡创资本隶属蚂蚁金服旗下。根据北京商报报道,时萃S……
1。4亿2。7亿,曾经被周琦压制的男人,如今成最伟大二轮秀自由市场开启之后,各大球队都开启了抢人大战,其中掘金队的目标很明确,那就是留住当家球星约基奇。最终双方也是愉快地达成了续约,约基奇拿到了NBA历史上最大的合同,5年2。7亿美元……
突发大商新玛特国贸店被勒令搬离1被勒令搬离?7月30日,郑州市中级人民法院发布公告,要求大商股份(郑州)商贸有限公司、大商集团郑州新玛特购物广场有限公司及其工作人员,自公告发出后7日内搬离。公告……
陆正耀重出江湖,趣小面正式挂牌开业陆正耀创业的最后一站来了。8月8日,陆正耀重出江湖,其创立的新品牌趣小面正式挂牌开业。据相关消息称:陆正耀趣小面已在重庆和北京两地开店营业,其中第一家门店位于重庆市……
世界顶级投资家及其投资哲学市场是人心的函数,由于投资者在知识、信息、时间等等方面的局限性和特定的思维定势,投资者的注意力事实上只能集中于为数极少的他所看重与感兴趣的因素及其相关逻辑关系上,我们作为一般的……
盒马NB事业部正式成立,欲打造普惠版盒区房7月17日,盒马事业群总裁侯毅发出内部信,正式成立盒马NB事业部,打造普惠版盒区房,首批已进入上海、北京、广州、武汉、西安等10个城市。盒马NB事业部是盒马事业群的第三个……
面包又硬又干是什么原因?水分蒸发了面包又干又硬的话,我觉得有以下几个原因。1你的选择的机器:面包机?烤箱?还是其他厨房用具?2如果是烤箱的话,我可以从我自己的真实经历来说,我们一开始……
热血传奇记忆套装真的和祈祷套装一样吗我是多多,继续讲解传奇,首先是比较靠前的时候,有两件装备,分开来说各自都是神装,两者合并到一起那就更是强大,他们分别是探测项链和传送戒指。这两件装备的效果其实很简单,探测项链是……
你对少数民族苗族都有哪些印象?印象深的是苗族的银饰很漂亮,苗医也比较有名,苗族人也是能歌善舞的,还有就是美食〔呲牙〕苗族是中华民族大家庭中的一员,名人辈出。今天介绍三位苗族名人,与友友们分享,他们是:……
第一次去西塘玩,有哪些不能错过的地道小吃推荐?去西塘玩的话,一定不要忘记尝尝这些小吃第一就是麦芽塌饼,这个是西塘千年风俗之特色时令点心,只有清明前后西塘本地人才做,麦芽塌饼是以糯米粉、赤豆、核桃仁、白糖,并配以中草药佛耳草……
盘点国民爱吃的几种香肠,各地具有特色的香肠是什么?说到香肠,首先得从家猪的祖先野猪说起,据说,早在五千多年前的人类新石器时代中期的炎黄时期,黄帝就训化成了世界上第一头野猪,当时叫夏猪(诸夏之人所训化),但后来又叫东亚猪,而由野……
葛根泡水喝有什么功效?葛根泡水喝的功效葛根属于一种豆科植物,在我国的很多地方也称之为甘葛或者甜葛,味道清甜爽口。对于女性来说,服用葛根后的好处有很多。平时生活中如果身体出现了项背疼痛、麻疹、酒……
长期喝纯牛奶的功效与作用是什么?长期喝纯牛奶的功效与作用是什么?长期喝纯牛奶的功效与作用是补虚损、益肺胃、生津润燥、养血解毒等。牛奶味甘,性微寒,归心、肺、胃经。牛奶具有补虚损,益肺胃,生津润燥,……
桃金娘泡酒有什么功效?桃金娘泡酒的功效与作用有哪些?桃金娘具有一定的药用价值,其味甘、涩,药性平,可入肝、脾二经,用它泡酒饮用,具有养血止血、涩肠固精等功效。经常饮用有助于缓解血虚体弱、鼻衄、……
用什么材料焖牛腩好?柱候酱焖牛腩是我喜欢做其中的一个菜,酱香味浓郁,是冬天不可缺少的美味。我的做法是新鲜牛腩既不用氽水又能保持牛腩鲜味,氽水会把牛腩的鲜煮去了,下面介绍一下做法。1。配料:牛……
11!12强赛最后悬念揭晓亚洲第7搭上末班车,韩国爆大冷北京时间3月29日晚,世预赛亚洲区12强赛最后一个悬念正式揭晓,伊拉克男足客场对阵叙利亚男足、阿联酋男足主场对阵韩国男足。最终阿联酋队战胜韩国队,力压伊拉克队排名小组第三,拿到……
船员在船上每天都吃海鲜吗?时间长了会不会厌恶?是不是每个船员在船上都是每天吃海鲜我不是太清楚,但是我可以说一件真人真事。我一同学的弟弟就是船员,有次一起聚餐的时候,我问他是不是海鲜都吃够了?他不加思索的回答我:确实如……
豆汁为什么北京人特别喜欢喝?而外地人根本就不敢喝?没那么夸张。不是所有的北京人都爱喝豆汁。我们家兄弟姐妹4人。加上我老公家的。一共8个人。就我们家,我大姐爱喝豆子计,其他人都不爱喝。我们8个人年龄最小的53。年龄最大的70。8……