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的Zato发送AMQP消息的教程
Apr 16 Python
Python编程之event对象的用法实例分析
Mar 23 Python
django使用图片延时加载引起后台404错误
Apr 18 Python
Python如何生成树形图案
Jan 03 Python
Python基于多线程实现ping扫描功能示例
Jul 23 Python
python使用参数对嵌套字典进行取值的方法
Apr 26 Python
如何给Python代码进行加密
Jan 10 Python
Python对称的二叉树多种思路实现方法
Feb 28 Python
python shapely.geometry.polygon任意两个四边形的IOU计算实例
Apr 12 Python
Django 5种类型Session使用方法解析
Apr 29 Python
浅谈Python 参数与变量
Jun 20 Python
python实现进度条的多种实现
Apr 29 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
PHP记录搜索引擎蜘蛛访问网站足迹的方法
2015/04/15 PHP
PHP+MySQL实现无极限分类栏目的方法
2015/12/23 PHP
在TP5数据库中四个字段实现无限分类的示例
2019/10/18 PHP
PHP连接SQL server数据库测试脚本运行实例
2020/08/24 PHP
eval的两组性能测试数据
2012/08/17 Javascript
js 判断一个元素是否在页面中存在
2012/12/27 Javascript
JavaScript获取鼠标移动时的坐标(兼容IE8、chome谷歌、Firefox)
2014/09/13 Javascript
js识别uc浏览器的代码
2015/11/06 Javascript
一些实用性较高的js方法
2016/04/19 Javascript
jQuery插件学习教程之SlidesJs轮播+Validation验证
2016/07/12 Javascript
关于iframe跨域POST提交的方法示例
2017/01/15 Javascript
js/jquery控制页面动态加载数据 滑动滚动条自动加载事件的方法
2017/02/08 Javascript
angularjs2中父子组件的数据传递的实例代码
2017/07/05 Javascript
Vue EventBus自定义组件事件传递
2018/06/25 Javascript
Vue实现滑动拼图验证码功能
2019/09/15 Javascript
js实现内置计时器
2019/12/16 Javascript
node.js基础知识汇总
2020/08/25 Javascript
浅谈vant组件Picker 选择器选单选问题
2020/11/04 Javascript
JavaScript 生成唯一ID的几种方式
2021/02/19 Javascript
python生成随机mac地址的方法
2015/03/16 Python
Python使用reportlab将目录下所有的文本文件打印成pdf的方法
2015/05/20 Python
Python中django学习心得
2017/12/06 Python
Python 中Pickle库的使用详解
2018/02/24 Python
Python面向对象程序设计OOP入门教程【类,实例,继承,重载等】
2019/01/05 Python
python openpyxl使用方法详解
2019/07/18 Python
python中struct模块之字节型数据的处理方法
2019/08/27 Python
python 使用pdfminer3k 读取PDF文档的例子
2019/08/27 Python
使用html5实现表格实现标题合并的实例代码
2019/05/13 HTML / CSS
维珍澳洲航空官网:Virgin Australia
2017/09/08 全球购物
世界顶级足球门票网站:Live Football Tickets
2017/10/14 全球购物
文明班级建设方案
2014/05/15 职场文书
环保志愿者活动总结
2014/06/27 职场文书
2014年国庆节演讲稿
2014/09/19 职场文书
党员四风问题对照检查材料
2014/09/27 职场文书
2015年度公共机构节能工作总结
2015/05/26 职场文书
Html5通过数据流方式播放视频的实现
2021/04/27 HTML / CSS