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中还原JavaScript的escape函数编码后字符串的方法
Aug 22 Python
给Python IDLE加上自动补全和历史功能
Nov 30 Python
python爬虫的数据库连接问题【推荐】
Jun 25 Python
Python Excel处理库openpyxl使用详解
May 09 Python
python 多线程对post请求服务器测试并发的方法
Jun 13 Python
Python爬虫抓取技术的一些经验
Jul 12 Python
python匿名函数用法实例分析
Aug 03 Python
python安装scipy的步骤解析
Sep 28 Python
django 简单实现登录验证给你
Nov 06 Python
flask的orm框架SQLAlchemy查询实现解析
Dec 12 Python
Windows下实现将Pascal VOC转化为TFRecords
Feb 17 Python
利用Python第三方库实现预测NBA比赛结果
Jun 21 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
加强版phplib的DB类
2008/03/31 PHP
php 中文处理函数集合
2008/08/27 PHP
ThinkPHP里用U方法调用js文件实例
2015/06/18 PHP
PHP框架laravel的.env文件配置教程
2017/06/07 PHP
php版本CKEditor 4和CKFinder安装及配置方法图文教程
2019/06/05 PHP
PHP中迭代器的简单实现及Yii框架中的迭代器实现方法示例
2020/04/26 PHP
jquery 学习笔记 传智博客佟老师附详细注释
2020/09/12 Javascript
判断js的Array和Object的实现方法
2016/08/29 Javascript
使用 bootstrap modal遇到的问题小结
2016/11/09 Javascript
关于Angular2 + node接口调试的解决方案
2017/05/28 Javascript
vue 请求后台数据的实例代码
2017/06/22 Javascript
vue.js内置组件之keep-alive组件使用
2018/07/10 Javascript
JointJS流程图的绘制方法
2018/12/03 Javascript
如何使用electron-builder及electron-updater给项目配置自动更新
2018/12/24 Javascript
微信小程序 wx.getUserInfo引导用户授权问题实例分析
2020/03/09 Javascript
Javascript数组及类数组相关原理详解
2020/10/29 Javascript
python笔记(1) 关于我们应不应该继续学习python
2012/10/24 Python
python中的对象拷贝示例 python引用传递
2014/01/23 Python
Python编程实现蚁群算法详解
2017/11/13 Python
pandas修改DataFrame列名的方法
2018/04/08 Python
tensorflow: 查看 tensor详细数值方法
2018/06/13 Python
基于python生成器封装的协程类
2019/03/20 Python
Python列表与元组的异同详解
2019/07/02 Python
如何在Django配置文件里配置session链接
2019/08/06 Python
解决Python设置函数调用超时,进程卡住的问题
2019/08/08 Python
使用python模拟命令行终端的示例
2019/08/13 Python
基于Tensorflow高阶读写教程
2020/02/10 Python
python爬虫开发之使用Python爬虫库requests多线程抓取猫眼电影TOP100实例
2020/03/10 Python
python开发实例之python使用Websocket库开发简单聊天工具实例详解(python+Websocket+JS)
2020/03/18 Python
使用Python项目生成所有依赖包的清单方式
2020/07/13 Python
无惧面试,带你搞懂python 装饰器
2020/08/17 Python
致1500米运动员广播稿
2014/02/07 职场文书
节能环保口号
2014/06/12 职场文书
2015年教研组工作总结
2015/05/04 职场文书
2016年度先进班组事迹材料
2016/03/01 职场文书
vue实力踩坑之push当前页无效
2022/04/10 Vue.js