python函数实例解析_python支持返回函数的实例解析

这篇文章主要介绍了python支持返回函数的实例解析,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

最近接触python,看到了python中返回函数的概念,以前只接触过函数返回值,比如python就可以返回int,str,list,dict等等类型数据,这里要说的是python还支持返回函数。

首先看看python支持返回函数的基本语法def f():

print 'call f()...'

# 定义函数g:

def g():

print 'call g()...'

# 返回函数g:

return g

这里,最外层的函数f会返回一个函数g,也就是函数g本身;

下面看看函数调用的过程;(接上面)>>> x = f() # 调用f()call f()...>>> x # 变量x就是上面一个最外层函数返回的函数(不是函数值)

>>> x() # x指向函数,因此可以调用,这里就是调用内层函数x()的过程call g()... # 调用x()就是执行g()函数定义的代码只返回函数的作用:

返回函数可以把一些计算延迟执行。例如,如果定义一个普通的求和函数:def calc_sum(lst):

return sum(lst)

>>>calc_sum([1,2,3,4])

结果直接是:10

但是,可以通过返回函数思想写代码,就可以“延时计算”def calc_sum(lst):

def lazy_sum():

return sum(lst) return lazy_sum

下面是调用:

注意,下面代码并没有对函数进行执行计算出结果,而是返回函数。>>> f = calc_sum([1, 2, 3, 4])

>>> f

对返回的函数进行调用时,才计算出结果>>>f()10

下面是一个例子:

请编写一个函数calc_prod(lst),它接收一个list,返回一个函数,返回函数可以计算参数的乘积。

思想:先定义能计算乘积的函数,再将此函数返回。def calc_prod(lst):

def lazy_prod():

def f(x,y):

return x*y

return reduce(f,lst,1)

return lazy_prod

f = calc_prod([1, 2, 3, 4])

print f()

相关推荐:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/441213.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【CodeForces - 260D】Black and White Tree (思维构造,猜结论,细节,构造一棵树)

题干: The board has got a painted tree graph, consisting of n nodes. Let us remind you that a non-directed graph is called a tree if it is connected and doesnt contain any cycles. Each node of the graph is painted black or white in such a mann…

手游 自建服务器,英灵神殿自己搭建服务器怎么弄

英灵神殿是一款冒险生存类游戏,在英灵神殿游戏中小伙伴要自己搭建服务器才能玩,那么要怎么搭建,有什么技巧吗?接下来和小编一起来看看吧!Valheim英灵神殿服务器搭建技巧第一步:SteamCMD和安装内容从这里下载SteamCMD。将其提取到…

描写火车站场景_关于描写火车站的句子

关于描写火车站的句子关于描写火车站的句子所以至今,我仍很爱乘火车,卧铺,靠在枕头上看书,沉沉睡去,听铁轨一层一层的荡漾,在记忆中昏暗地穿行,如果我爱谁,我们一定会乘火车去很远的…

【POJ - 1463】Strategic game (树上最小点覆盖,树形dp)

题干: Bob enjoys playing computer games, especially strategic games, but sometimes he cannot find the solution fast enough and then he is very sad. Now he has the following problem. He must defend a medieval city, the roads of which form a tree…

vue css自定义标签,Vue如何使用CSS自定义变量

目录在 css 自定义变量的功能以及出来许久了,但实际开发中大家使用并不多。归其原因是因为 less、sass 等预处理器已经拥有定义变量的功能,以及Vue、react很方便设置 style 样式,大家可能觉得使用 css 定义变量不方便且没必要。实则不然举个最…

【CodeForces - 260A】Adding Digits (思维构造)

题干: Vasya has got two number: a and b. However, Vasya finds number a too short. So he decided to repeat the operation of lengthening number a n times. One operation of lengthening a number means adding exactly one digit to the number (in the…

人工智能在fpga的具体应用_人工智能带动了FPGA的发展

未来几年,人工智能芯片的需求将急剧上升。联合市场研究公司(Allied Market Research)预估,未来5年,人工智能芯片的需求将以每年近50%的速度增长,因为该技术将在汽车、医疗保健等多个领域得到广泛应用。Xilinx深知其中存…

恐怖黎明稳定服务器,恐怖黎明新人联机图文教程 怎么联机-游侠网

恐怖黎明怎么联机?不少玩家想体验联机,但是不知道方法,小编这里给大家带来了新人联机图文教程,不会的萌新来学习下吧。联机图文教程:A1 联机:因为gd(grimdawn)没有自己的战网平台(就是专供联机玩的专职服务器 server)&#xff0c…

【CodeForces - 260B 】Ancient Prophesy (暴力匹配,BF算法,日期字符串)

题干: A recently found Ancient Prophesy is believed to contain the exact Apocalypse date. The prophesy is a string that only consists of digits and characters "-". Well say that some date is mentioned in the Prophesy if there is a su…

github 上传代码_leetcode爬虫:爬取代码;生成readme;上传github

Leetcode-Helper哪个程序员 不想一键下写过的代码,自动上传Github,并且还能生成好看的README呢?有用的话点个⭐吧,谢谢你。Leetcode-Helper传送门​github.com主要功能 模拟登陆力扣中国站(leetcode-cn)爬取每题提交的ac代码&…

绝地求生信号枪只能在服务器吗,绝地求生信号枪怎么用?信号枪刷新点及用法详解...

绝地求生信号枪怎么用?信号枪刷新点及用法详解2018-03-15 15:22:12来源:吃鸡小助手编辑:野狐禅评论(0)绝地求生近日更新中悄悄加入了信号枪,引得广大玩家热情满满的在游戏中寻找,信号枪到底怎么用呢?下面就…

spring的beanutils工具类_基于spring-beans实现工具类BeanUtils基于Class实例化注入对象及查找方法、复制属性等操作...

一、前言基于spring-beans(4.1.4)的工具类org.springframework.beans.BeanUtils对注入spring对象按照Class实例化instantiateClass、class对象方法名称methodName查找findMethod、属性查找对于class类信息findPropertyType、对象属性复制copyProperties等常用操作,具…

【CodeForces - 260C】Balls and Boxes (思维模拟,有坑,时光倒流)

题干: Little Vasya had n boxes with balls in the room. The boxes stood in a row and were numbered with numbers from 1 to n from left to right. Once Vasya chose one of the boxes, lets assume that its number is i, took all balls out from it (it …

文件服务器共享文件夹访问权限,5对文件服务器中的共享文件夹进行访问权限控制...

对文件服务器中的共享文件夹进行访问权限控制1. 实训目的在Windows Server 2003环境下设置文件服务器的目的是要对多用户进行资源共享,这其中经常遇到不同用户应该分配不同权限的问题,通过这个实训希望读者了解Windows Server 2003中访问权限设置方法和具…

java生日正则表达式_java之正则表达式、日期操作

正则表达式和日期操作正则表达式简介正则表达式就是使用一系列预定义的特殊字符来描述一个字符串的格式规则,然后使用该格式规则匹配某个字符串是否符合格式要求。作用:比如注册邮箱,邮箱有用户名和密码,一般会对其限制长度,这个限制长度的事情就是正则表达式做的规…

渲染服务器位置,如何用服务器做渲染

如何用服务器做渲染 内容精选换一换����BoostKit ARMԭ��ʹ���׼������嵥�&#xfffd…

【HDU - 2376】Average distance (树,平均距离,算贡献)

题干: Given a tree, calculate the average distance between two vertices in the tree. For example, the average distance between two vertices in the following tree is (d 01 d 02 d 03 d 04 d 12 d 13 d 14 d 23 d 24 d 34)/10 (63799131510122)/10…

读取ppt并存入数据库_Java解析Excel文件并把数据存入数据库

前段时间做一个小项目,为了同时存储多条数据,其中有一个功能是解析Excel并把其中的数据存入对应数据库中。花了两天时间,不过一天多是因为用了"upload"关键字作为URL从而导致总报同一个错,最后在同学的帮助下顺利解决&a…

两台虚拟服务器如何级联,[教程] 利用open vswitch建立vxlan隧道实现不同主机上的虚拟交换机级联...

写在开头在某些环境下,需要实现两台物理机中的openvswitch交换机级联,以实现两台交换机中的设备互相通讯,这里使用vxlan隧道技术,将数据包封装在UDP中,通过以太网实现数据包传输。VXLAN是一种大二层的虚拟技术&#xf…

【POJ - 3041】Asteroids (二分图,最小点覆盖)

题干&#xff1a; Bessie wants to navigate her spaceship through a dangerous asteroid field in the shape of an N x N grid (1 < N < 500). The grid contains K asteroids (1 < K < 10,000), which are conveniently located at the lattice points of the…