Python return语句如何实现结果返回调用


Posted in Python onOctober 15, 2020

return 语句就是讲结果返回到调用的地方,并把程序的控制权一起返回

程序运行到所遇到的第一个return即返回(退出def块),不会再运行第二个return。

要返回两个数值,写成一行即可:

def a(x,y):
  if x==y:
    return x,y
print a(3,3)<br><br>>>> 3,3

但是也并不意味着一个函数体中只能有一个return 语句,例如:

def test_return(x):
  if x > 0:
    return x
  else:
    return 0

函数没有 return,默认 return一个 None 对象。

递归函数中没有return 的情况:

def gcd(a,b):
   if a%b==0:
     return b
   else:
     gcd(b,a%b)

分析:else 中没有 return 就没有出口,这个程序是自己内部运行,程序没有返回值,

python 和 print 的区别:

x = 1
y = 2
def add (x, y):
z = x + y

return z
print (add(x,y)


x = 1
y = 2
def add (x, y):

z = x + y

print z
print (add(x,y))

在交互模式下,return的结果会自动打印出来,而作为脚本单独运行时则需要print函数才能显示。

默认情况下,遇见 return 函数就会返回给调用者,但是 try,finally情况除外:

def func(): 
  try: 
    print 98 
    return 'ok' #函数得到了一个返回值 
  finally: #finally语句块中的语句依然会执行 
    print 98 
 
print fun()

输出:

98
98
ok

函数作为返回值返回:

标签: python

def lazy_sum(*args):
  def sum():
    x=0
    for n in args:
      x=x+n
    return x
  return sum
lazy_sum(1,2,3,4,5,6,7,8,9) #这时候lazy_sum 并没有执行,而是返回一个指向求和的函数的函数名sum 的内存地址。
f=lazy_sum(1,2,3,4,5,6,7,8,9)
print(type(f))
print(f()) # 调用f()函数,才真正调用了 sum 函数进行求和,

这其实就是闭包。

返回一个函数列表:

def count():
  fs = []
  for i in range(1,4):
    def f():
      return i*i
    fs.append(f)
  return fs
f1, f2, f3 = count()
print(f1())
print(f2())
print(f3())
输出:
9
9
9

执行过程:

当i=1, 执行for循环, 结果返回函数f的函数地址,存在列表fs中的第一个位置上。

当i=2, 由于fs列表中第一个元素所指的函数中的i是count函数的局部变量,i也指向了2;然后执行for循环, 结果返回函数f的函数地址,存在列表fs中的第二个位置上。

当i=3, 同理,在fs列表第一个和第二个元素所指的函数中的i变量指向了3; 然后执行for循环, 结果返回函数f的函数地址,存在列表fs中的第三个位置上。

所以在调用f1()的时候,函数中的i是指向3的:

f1():
return 3*3

同理f2(), f3()结果都为9

闭包时牢记的一点就是:返回函数不要引用任何循环变量,或者后续会发生变化的变量。即包在里面的函数(本例为f()),不要引用外部函数(本例为count())的任何循环变量

如果一定要引入循环变量,方法是再创建一个函数,用该函数的参数绑定循环变量当前的值,无论该循环变量后续如何更改,已绑定到函数参数的值不变:

def count():
  fs=[]
  for i in range(1,4):
    def f(j):
      def g():
        return j*j
      return g
    fs.append(f(i))
  return fs

f1,f2,f3=count()
print(f1())
print(f2())
print(f3())

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python lxml模块安装教程
Jun 02 Python
python的numpy模块安装不成功简单解决方法总结
Dec 23 Python
python如何修改装饰器中参数
Mar 20 Python
Python使用cx_Freeze库生成msi格式安装文件的方法
Jul 10 Python
python的继承知识点总结
Dec 10 Python
pyqt 实现QlineEdit 输入密码显示成圆点的方法
Jun 24 Python
Python 保持登录状态进行接口测试的方法示例
Aug 06 Python
python 提取文件指定列的方法示例
Aug 07 Python
python调用matplotlib模块绘制柱状图
Oct 18 Python
简单了解Pandas缺失值处理方法
Nov 16 Python
Python找出列表中出现次数最多的元素三种方式
Feb 24 Python
Python字典的基础操作
Nov 01 Python
python 进程池pool使用详解
Oct 15 #Python
python 输入字符串生成所有有效的IP地址(LeetCode 93号题)
Oct 15 #Python
Python3使用 GitLab API 进行批量合并分支
Oct 15 #Python
10款最佳Python开发工具推荐,每一款都是神器
Oct 15 #Python
matplotlib教程——强大的python作图工具库
Oct 15 #Python
工程师必须了解的LRU缓存淘汰算法以及python实现过程
Oct 15 #Python
详解pycharm配置python解释器的问题
Oct 15 #Python
You might like
全国FM电台频率大全 - 18 湖南省
2020/03/11 无线电
php下实现在指定目录搜索指定类型文件的函数
2008/10/03 PHP
php生成随机密码的三种方法小结
2010/09/04 PHP
Yii2 rbac权限控制之rule教程详解
2016/06/23 PHP
jQuery 表单验证插件formValidation实现个性化错误提示
2009/06/23 Javascript
对jQuery的事件绑定的一些思考(补充)
2013/04/20 Javascript
JavaScript 语言基础知识点总结(思维导图)
2013/11/10 Javascript
JavaScript调用客户端的可执行文件(示例代码)
2013/11/28 Javascript
jquery实现当滑动到一定位置时固定效果
2014/06/17 Javascript
JavaScrip调试技巧之断点调试
2015/10/22 Javascript
详解JavaScript编程中的数组结构
2015/10/24 Javascript
基于Jquery+div+css实现弹出登录窗口(代码超简单)
2015/10/27 Javascript
vue调用高德地图实例代码
2017/04/28 Javascript
基于JavaScript实现淘宝商品广告效果
2017/08/10 Javascript
vuex的使用及持久化state的方式详解
2018/01/23 Javascript
vue+vuex+axios实现登录、注册页权限拦截
2018/03/09 Javascript
Vue axios设置访问基础路径方法
2018/09/19 Javascript
如何使用vuex实现兄弟组件通信
2018/11/02 Javascript
vue-cli webpack配置文件分析
2019/05/20 Javascript
vue使用openlayers实现移动点动画
2020/09/24 Javascript
[01:17]Ti4 循环赛第一日回顾
2014/07/11 DOTA
[55:47]DOTA2上海特级锦标赛C组小组赛#2 LGD VS Newbee第三局
2016/02/27 DOTA
[02:47]2018年度DOTA2最佳辅助位选手4号位-完美盛典
2018/12/17 DOTA
[38:32]完美世界DOTA2联赛循环赛 Forest vs DM 第二场 11.06
2020/11/06 DOTA
Python open()文件处理使用介绍
2014/11/30 Python
Python合并字符串的3种方法
2015/05/21 Python
python查看微信好友是否删除自己
2016/12/19 Python
Python实现的矩阵类实例
2017/08/22 Python
手把手教你使用Python创建微信机器人
2019/04/29 Python
澳大利亚最大的百货公司:Myer
2018/12/21 全球购物
技校毕业生的自我评价
2013/12/27 职场文书
《放飞蜻蜓》教学反思
2014/04/27 职场文书
大学生求职计划书
2014/04/30 职场文书
志愿者宣传口号
2014/06/17 职场文书
2015秋季开学典礼致辞
2015/07/16 职场文书
Javascript之datagrid查询详解
2021/09/15 Javascript