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中用Spark模块的使用教程
Apr 13 Python
在Python下进行UDP网络编程的教程
Apr 29 Python
Python中列表、字典、元组数据结构的简单学习笔记
Mar 20 Python
Python 'takes exactly 1 argument (2 given)' Python error
Dec 13 Python
PyQt5每天必学之工具提示功能
Apr 19 Python
numpy.linspace 生成等差数组的方法
Jul 02 Python
python中的for循环
Sep 28 Python
python绘制地震散点图
Jun 18 Python
Python集合操作方法详解
Feb 09 Python
浅析Python 抽象工厂模式的优缺点
Jul 13 Python
pytorch简介
Nov 11 Python
JAVA SpringMVC实现自定义拦截器
Mar 16 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
一个颜色轮换的简单例子
2006/10/09 PHP
PHP多线程抓取网页实现代码
2010/07/22 PHP
php中取得URL的根域名的代码
2011/03/23 PHP
PHP数据类型之整数类型、浮点数的介绍
2013/04/28 PHP
php用户注册信息验证正则表达式
2015/11/12 PHP
JavaScript中null与undefined分析
2009/07/25 Javascript
js鼠标左右键 键盘值小结
2010/06/11 Javascript
javascript针对DOM的应用分析(三)
2012/04/15 Javascript
同域jQuery(跨)iframe操作DOM(实例讲解)
2013/12/19 Javascript
jQuery解决input元素的blur事件和其他非表单元素的click事件冲突问题
2016/08/15 Javascript
JS原型与原型链的深入理解
2017/02/15 Javascript
Vue.js基础指令实例讲解(各种数据绑定、表单渲染大总结)
2017/07/03 Javascript
JS库之wow.js使用方法
2017/09/14 Javascript
vue-cli开发环境实现跨域请求的方法
2018/04/07 Javascript
详解Vue组件插槽的使用以及调用组件内的方法
2018/11/13 Javascript
中高级前端必须了解的JS中的内存管理(推荐)
2019/07/04 Javascript
Python环境搭建之OpenCV的步骤方法
2017/10/20 Python
有趣的python小程序分享
2017/12/05 Python
浅谈Python里面小数点精度的控制
2018/07/16 Python
如何使用Python自动控制windows桌面
2019/07/11 Python
pycharm 安装JPype的教程
2019/08/08 Python
Python importlib动态导入模块实现代码
2020/04/16 Python
Python判断远程服务器上Excel文件是否被人打开的方法
2020/07/13 Python
Manjaro、pip、conda更换国内源的方法
2020/11/17 Python
在python3.9下如何安装scrapy的方法
2021/02/03 Python
使用纯HTML5编写一款网页上的时钟的代码分享
2015/11/16 HTML / CSS
html5 http的轮询和Websocket原理
2018/10/19 HTML / CSS
瑞士灯具购物网站:Lampenwelt.ch
2018/07/08 全球购物
阳光体育:Sunny Sports(购买露营和远足设备)
2018/08/07 全球购物
军校大学生个人的自我评价
2014/02/17 职场文书
工作失职检讨书(精华篇)
2014/10/15 职场文书
收银员岗位职责
2015/02/03 职场文书
python基础之停用词过滤详解
2021/04/21 Python
MySQL 如何设计统计数据表
2021/06/15 MySQL
css 边框添加四个角的实现代码
2021/10/16 HTML / CSS
python 安全地删除列表元素的方法
2022/03/16 Python