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爬取qq music中的音乐url及批量下载
Mar 23 Python
django实现同一个ip十分钟内只能注册一次的实例
Nov 03 Python
python中requests和https使用简单示例
Jan 18 Python
TensorFlow的权值更新方法
Jun 14 Python
利用django-suit模板添加自定义的菜单、页面及设置访问权限
Jul 13 Python
Python 微信爬虫完整实例【单线程与多线程】
Jul 06 Python
python 3.7.4 安装 opencv的教程
Oct 10 Python
pyinstaller将含有多个py文件的python程序做成exe
Apr 29 Python
python3+opencv 使用灰度直方图来判断图片的亮暗操作
Jun 02 Python
python中实现词云图的示例
Dec 19 Python
Pygame如何使用精灵和碰撞检测
Nov 17 Python
Pygame Time时间控制的具体使用详解
Nov 17 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 Xdebug的安装与使用详解
2013/06/20 PHP
PHP zip扩展Linux下安装过程分享
2014/05/05 PHP
PHP经典设计模式之依赖注入定义与用法详解
2019/05/21 PHP
De facto standard 世界上不可思议的事实标准
2010/08/29 Javascript
jquery 单击li防止重复加载的实现代码
2010/12/24 Javascript
网页右键ie不支持event.preventDefault和event.returnValue (需要加window)
2013/02/22 Javascript
鼠标拖动实现DIV排序示例代码
2013/10/14 Javascript
jquery 隐藏与显示tr标签示例代码
2014/06/06 Javascript
JS深度拷贝Object Array实例分析
2016/03/31 Javascript
JS模拟的Map类实现方法
2016/06/17 Javascript
jquery操作checkbox火狐下第二次无法勾选的解决方法
2016/10/10 Javascript
原生js二级联动效果
2017/06/20 Javascript
React Native 集成jpush-react-native的示例代码
2017/08/16 Javascript
angular4 如何在全局设置路由跳转动画的方法
2017/08/30 Javascript
Angular2使用vscode断点调试ts文件的方法
2017/12/13 Javascript
Angular2.0实现modal对话框的方法示例
2018/02/18 Javascript
JavaScript fetch接口案例解析
2018/08/30 Javascript
JS使用new操作符创建对象的方法分析
2019/05/30 Javascript
浅谈VUE中演示v-for为什么要加key
2020/01/16 Javascript
深入解读VUE中的异步渲染的实现
2020/06/19 Javascript
跟老齐学Python之用Python计算
2014/09/12 Python
在Python中操作字典之fromkeys()方法的使用
2015/05/21 Python
Python实现栈的方法
2015/05/26 Python
python常见排序算法基础教程
2017/04/13 Python
为什么Python中没有&quot;a++&quot;这种写法
2018/11/27 Python
python实现AES加密解密
2019/03/28 Python
使用python爬取抖音视频列表信息
2019/07/15 Python
python数据预处理方式 :数据降维
2020/02/24 Python
Python实现区域填充的示例代码
2021/02/03 Python
公务员总结性个人自我评价
2013/12/05 职场文书
志愿者活动总结
2014/04/28 职场文书
关于诚信的活动方案
2014/08/18 职场文书
公安四风对照检查材料思想汇报
2014/10/11 职场文书
自我检讨报告
2015/01/28 职场文书
golang判断key是否在map中的代码
2021/04/24 Golang
阿里云服务器(windows)手动部署FTP站点详细教程
2022/08/05 Servers