怎样让python调用自定义函数多次调用函数.让函数返回的值相加

1.Python函数返回值
两种形式: 1 返回一个值。 2 返回多个值。 现看看返回一个值的吧。
def firstvalue(a,b):
print firstvalue(1,2)结果:3
再看看返回多个值的: 那怎么可以返回多个值呢,其他的语言一般调用函数的话,只能返回一个值,可能我不太熟悉所有的语言,我知道的语言只能返回一个值,而python可以返回多个值,感觉非常方便,发代码看下:
def secondvalue(a,b):
return (a,b,c)
x,y,z = secondvalue(1,2)
print 'x:',x,'y:',y,'z:',z
2.类的返回值
函数可以说是一个黑箱,输入一些值,然后输出一些值,因此return就是让函数输出值的操作。
然而,类,简单来说就是一系列函数的集合,它最主要的用途是设定对象和方法。
在Python中,我简单举个例子,我要算a+b=c,我输入a和b,输出c。
那么,函数就是这样的:
def plus(a, b):
这里你就可以看到,输入两个值,经过函数内部计算,就输出的一个值。在主程序中你调用这个函数,比如:c = plus(1,2),那么print c就得到3。
但是类是不同的,同样是计算a+b=c,我要先设定一种方法,比如叫做Plus,如下:
Class Plus:
def __init__(self, a, b):
self.a = a
self.b = b
def return_result(self):
self.c = self.a + self.b
return self.c
那么在主程序中你就要调用这个类,如下:
equation = Plus(1, 2)
result =equation.return_result()
print result
这样你就会得到结果3。
python函数 如何返回多个数组 列表返回值 以及接收方法
我们使用python开发时,自定义的函数 有时候需要返回多个值,可能是多个数值、字符串也有可能是多个列表,那么如何返回;返回之后 在调用该函数时 又应该如何接收呢?例如:我定义了一个函数,传入一个ur...
python函数作为返回值
函数作为返回值
高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回。
我们来实现一个可变参数的求和。通常情况下,求和的函数是这样定义的:
def calc_sum(*args...
python返回多个参数
在Python中定义的函数返回了两个数组
本来是这样写的
return np.array(train_x),np.array(train_y)然后就一直报错...
python函数返回多个值
def func():
return x, y
a, b = func()
print( &a: & + str( a ) + &, b: & + st...
python---多个return值
python—多个return值
方法一:使用关键字global
def profile():
global name
global age
name = &Danny&
在python中我们可不可以返回多个值?
&&& def divid(a, b):
shang = a//b
yushu = a%b
return s...
转自:http://chensx.iteye.com/blog/1299383
某些时候,用python模块来实现一些特定的功能会比用其他类型的模块更加简洁方便。 在C++程序中,调用python模...
浅析对return的理解
最近很忙,但是还是很认真的学习python这个东西,不是出于什么目的,只是单纯的喜欢罢了。最近学习的东西比较简单,但是也遇到了一些问题,就是比较迷惑人的问题,今天小编就在这里讲讲自己的对return的...
python- 如何返回多个值
函数的定义
首先,我们要定义一个函数, 以说明这个函数的功能。
def square_sum(a,b):
c = a**2 + b**2
这个函数的功能...
python函数返回多个值的示例方法
python函数返回多个值的示例方法
python可以返回多个值,确实挺方便
函数里的return只能返回一个值,但是返回类型是没是限制的
因此,我们可以“返回一个 tuple类型,来间接达...
没有更多推荐了,怎样在一个class内调用好几个函数的返回值?需要用return吗?【python吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:193,958贴子:
怎样在一个class内调用好几个函数的返回值?需要用return吗?收藏
class EV():
def __init__(self):
self.drive=self.drive()
self.mils=self.mile()
def drive(self):
def mile(self):
if self.a==2 & self.b==3:
print(&1&)
print(&2&)ev=EV()比如说 我想执行drive()和mile()两个函数 结果报错说是
python学习路线,北大青鸟学Python,就业快人一步!北大青鸟入学签订就业协议,三重就业服务体系助您实现梦想
报错 Traceback (most recent call last):
File &E:\Project-Python\Simpy\test_3.py&, line 1, in &module&
class EV():
File &E:\Project-Python\Simpy\test_3.py&, line 14, in EV
if self.a==2 & self.b==3:NameError: name 'self' is not defined
登录百度帐号python函数返回值问题
[问题点数:40分,无满意结帖,结帖人shinepolo]
本版专家分:0
结帖率 90.91%
CSDN今日推荐
本版专家分:0
本版专家分:684
本版专家分:27583
2014年2月 其他开发语言大版内专家分月排行榜第一2013年6月 其他开发语言大版内专家分月排行榜第一2013年5月 其他开发语言大版内专家分月排行榜第一2013年4月 其他开发语言大版内专家分月排行榜第一2012年3月 其他开发语言大版内专家分月排行榜第一
2014年8月 其他开发语言大版内专家分月排行榜第二2014年7月 其他开发语言大版内专家分月排行榜第二2014年5月 其他开发语言大版内专家分月排行榜第二2014年4月 其他开发语言大版内专家分月排行榜第二2014年3月 其他开发语言大版内专家分月排行榜第二2014年1月 其他开发语言大版内专家分月排行榜第二2013年12月 其他开发语言大版内专家分月排行榜第二2013年11月 其他开发语言大版内专家分月排行榜第二2013年3月 其他开发语言大版内专家分月排行榜第二2012年5月 其他开发语言大版内专家分月排行榜第二2012年4月 其他开发语言大版内专家分月排行榜第二2010年10月 其他开发语言大版内专家分月排行榜第二2010年9月 其他开发语言大版内专家分月排行榜第二
2013年9月 其他开发语言大版内专家分月排行榜第三2012年6月 其他开发语言大版内专家分月排行榜第三
本版专家分:0
本版专家分:0
本版专家分:6970
2012年4月 其他开发语言大版内专家分月排行榜第一
匿名用户不能发表回复!
其他相关推荐python 如何循环调用同一函数,并将上次调用返回值作为此次调用时的参数? - 知乎有问题,上知乎。知乎作为中文互联网最大的知识分享平台,以「知识连接一切」为愿景,致力于构建一个人人都可以便捷接入的知识分享网络,让人们便捷地与世界分享知识、经验和见解,发现更大的世界。2被浏览<strong class="NumberBoard-itemValue" title="分享邀请回答# 循环调用function, 使用前一次的返回值作为本次的参数
return_value = function(para_init)
while True:
return_value = function(return_value)
如果要写成函数,或许可以这样:# 重复调用函数f, 每次调用的参数是前一次的返回值
def repeat(f, para_init):
return_value = f(para_init)
while True:
return_value = f(return_value)
然后把函数f换成具体函数(比如sql调用)应该就好了。赞同 1 条评论分享收藏感谢收起1+2+3+...+100 = 5050def lazy_sum(): return reduce(lambda x, y: x+y, alist)我们定义了一个函数lazy_sum,作用是对alist中的所有元素求和后返回。alist假设为1到100的整数列表:alist = range(1, 101)但是出于某种原因,我并不想马上返回计算结果,而是在之后的某个地方,通过显示的调用输出结果。于是我用一个wrapper函数对其进行包装:def wrapper(): alist = range(1, 101) def lazy_sum(): return reduce(lambda x, y: x+y, alist) return lazy_sumlazy_sum = wrapper() #wrapper() 返回的是lazy_sum函数对象if __name__ == '__main__': lazy_sum() #5050这是一个典型的Lazy Evaluation的例子。我们知道,一般情况下,局部变量在函数返回时,就会被垃圾回收器回收,而不能再被使用。但是这里的alist却没有,它随着lazy_sum函数对象的返回被一并返回了(这个说法不准确,实际是包含在了lazy_sum的执行环境中,通过__globals__),从而延长了生命周期。当在if语句块中调用lazy_sum()的时候,解析器会从上下文中(这里是Enclosing层的wrapper函数的局部作用域中)找到alist列表,计算结果,返回5050。当你需要动态的给已定义的函数增加功能时,比如:参数检查,类似的原理就变得很有用:def add(a, b): return a+b这是很简单的一个函数:计算a+b的和返回,但我们知道Python是 动态类型+强类型 的语言,你并不能保证用户传入的参数a和b一定是两个整型,他有可能传入了一个整型和一个字符串类型的值:In [2]: add(1, 2)Out[2]: 3In [3]: add(1.2, 3.45)Out[3]: 4.65In [4]: add(5, 'hello')---------------------------------------------------------------------------TypeError Traceback (most recent call last)/home/chiyu/ipython-input-4-f2f9e8aa5eae> in module>()----> 1 add(5, 'hello')/home/chiyu/ipython-input-1-02b3d3d6caec> in add(a, b) 1 def add(a, b):----> 2 return a+bTypeError: unsupported operand type(s) for +: 'int' and 'str'于是,解析器无情的抛出了一个TypeError异常。动态类型:在运行期间确定变量的类型,python确定一个变量的类型是在你第一次给他赋值的时候;强类型:有强制的类型定义,你有一个整数,除非显示的类型转换,否则绝不能将它当作一个字符串(例如直接尝试将一个整型和一个字符串做+运算);因此,为了更加优雅的使用add函数,我们需要在执行+运算前,对a和b进行参数检查。这时候装饰器就显得非常有用:import logginglogging.basicConfig(level = logging.INFO)def add(a, b): return a + bdef checkParams(fn): def wrapper(a, b): if isinstance(a, (int, float)) and isinstance(b, (int, float)): #检查参数a和b是否都为整型或浮点型 return fn(a, b) #是则调用fn(a, b)返回计算结果 #否则通过logging记录错误信息,并友好退出 logging.warning('variable 'a' and 'b' cannot be added') return return wrapper #fn引用add,被封存在闭包的执行环境中返回if __name__ == '__main__': #将add函数对象传入,fn指向add #等号左侧的add,指向checkParams的返回值wrapper add = checkParams(add) add(3, 'hello') #经过类型检查,不会计算结果,而是记录日志并退出注意checkParams函数:首先看参数fn,当我们调用checkParams(add)的时候,它将成为函数对象add的一个本地(Local)引用;在checkParams内部,我们定义了一个wrapper函数,添加了参数类型检查的功能,然后调用了fn(a, b),根据LEGB法则,解释器将搜索几个作用域,并最终在(Enclosing层)checkParams函数的本地作用域中找到fn;注意最后的return wrapper,这将创建一个闭包,fn变量(add函数对象的一个引用)将会封存在闭包的执行环境中,不会随着checkParams的返回而被回收;当调用add = checkParams(add)时,add指向了新的wrapper对象,它添加了参数检查和记录日志的功能,同时又能够通过封存的fn,继续调用原始的add进行+运算。因此调用add(3, 'hello')将不会返回计算结果,而是打印出日志:chiyu@chiyu-PC:~$ python func.py WARNING:root:variable 'a' and 'b' cannot be added有人觉得add = checkParams(add)这样的写法未免太过麻烦,于是python提供了一种更优雅的写法,被称为语法糖:@checkParamsdef add(a, b): return a + b这只是一种写法上的优化,解释器仍然会将它转化为add = checkParams(add)来执行。6. 回归问题def addspam(fn): def new(*args): print 'spam,spam,spam' return fn(*args) return new@addspamdef useful(a,b): print a**2+b**2首先看第二段代码:@addspam装饰器,相当于执行了useful = addspam(useful)。在这里题主有一个理解误区:传递给addspam的参数,是useful这个函数对象本身,而不是它的一个调用结果;再回到addspam函数体:return new 返回一个闭包,fn被封存在闭包的执行环境中,不会随着addspam函数的返回被回收;而fn此时是useful的一个引用,当执行return fn(*args)时,实际相当于执行了return useful(*args);最后附上一张代码执行过程中的引用关系图,希望能帮助你理解:
喜欢该文的人也喜欢

我要回帖

更多关于 python函数调用另一个函数 的文章

 

随机推荐