本章详细介绍 返回值

0x 00 返回值简介

0x 01 指定返回值与隐含返回值

0x 02 return 语句位置与多条 return 语句

0x 03 返回值类型

0x 04 函数嵌套

0x 00 返回值简介

  • 回顾下,上一节简单介绍了函数及其各种参数,其中也有简单介绍 print 和 return 的区别,print 仅仅是打印在控制台,而 return 则是将 return 后面的部分作为返回值作为函数的输出,可以用变量接走,继续使用该返回值做其它事。
  • 函数需要先定义后调用,函数体中 return 语句的结果就是返回值。如果一个函数没有 reutrn 语句,其实它有一个隐含的 return 语句,返回值是 None,类型也是 'NoneType'。
  • return 语句的作用:
  • 结束函数调用、返回值

0x 01 指定返回值与隐含返回值

  • 函数体中 return 语句有指定返回值时返回的就是其值

  • 函数体中没有 return 语句时,函数运行结束会隐含返回一个 None 作为返回值,类型是 NoneType,与 return 、return None 等效,都是返回 None。

指定 return 返回值函数举例:

  

def showplus(x):
print(x)
return x + 1 num = showplus(6)
add = num + 2
print(add) 输出结果:
6
9

  

隐含 return None 举例:

 

def showplus(x):
print(x) num = showplus(6)
print(num)
print(type(num)) 输出结果:
6
None
<class 'NoneType'>

  

 

0x 02 return 语句位置与多条 return 语句

  • python 函数使用 return 语句返回 "返回值",可以将其赋给其它变量作其它的用处

  • 所有函数都有返回值,如果没有 return 语句,会隐式地调用 return None 作为返回值

  • 一个函数可以存在多条 return 语句,但只有一条可以被执行,如果没有一条 reutrn 语句被执行,同样会隐式调用 return None 作为返回值

  • 如果有必要,可以显式调用 return None 明确返回一个None(空值对象)作为返回值,可以简写为 return,不过 python 中懒惰即美德,所以一般能不写就不写

  • 如果函数执行了 return 语句,函数会立刻返回,结束调用,return 之后的其它语句都不会被执行了

举例 1:

 def showplus(x):
print(x)
return x + 1
print(x + 1) #该语句会执行么 print(showplus(6)) 输出结果:
6
7

举例 2:

 def showplus(x):
print(x) #
return x + 1 #
return x + 2 # 该语句也不会被执行 print(showplus(5)) 输出结果:
5
6

举例 3:

 def guess(x):
if x > 3:
return "> 3"
else:
return "<= 3" print(guess(10))
print(guess(2)) 输出结果:
> 3
<= 3

举例 4:

# for .. else .. 语句 (意外终止情况)

# 表示如果 for 语句段的内容正常循环结果才会执行 else 段的语句,如果 for 在循环过程中时被 break 或者 return 语句意外终止循环,就不会执行 else 段中的语句。

def fn(x):
for i in range(x):
if i > 4:
return i
else:
print("{} is not greater than 4".format(x)) print(fn(3))
print(fn(6)) 返回结果:
3 is not greater than 4
None
5

0x 03 返回值类型

  • 无论定义的是返回什么类型,return 只能返回单值,但值可以存在多个元素。

  • return [1,3,5] 是指返回一个列表,是一个列表对象,1,3,5 分别是这个列表的元素

  • return 1,3,5 看似返回多个值,隐式地被Python封装成了一个元祖返回

举例 1:

def fn():
return 3 #单值时,返回的是什么类型 print(fn())
print(type(fn())) 输出结果:
3
<class 'int'> #int 整数类型

举例 2:

def showlist():
return [1,3,5] #多元素,返回的是什么类型 print(type(showlist()))
print(showlist()) 输出结果:
<class 'list'>
[1, 3, 5] #列表类型

举例 3:

def showlist():
return (2,4,6) #多元素,返回的是什么类型 print(type(showlist()))
print(showlist()) 输出结果:
<class 'tuple'> #元祖类型
(2, 4, 6)

举例 4:

def showlist():
return 2,4,6 #多值时,不指定类型 print(type(showlist()))
print(showlist()) 输出结果:
<class 'tuple'> #默认封装成元祖类型

0x 04 函数嵌套

  • 函数有可见范围(内外可见关系),这就是作用域的概念。

  • 内部函数不能被外部直接调用,会抛异常 NameError。

举例 1:

def outer():
def inner(): #可以理解为内部函数
print("inner")
print("outer")
outer() 输出结果:
outer

此时如果调用 outer(),只会执行 print("outer"),因为 inner 虽然在 outer 函数内,但它也是一个函数,函数如果要调用,就必须用 '函数名()' 方式。

举例 2:

def outer():
def inner():
print("inner")
print("outer") inner() #外部无法引用内部函数,内部函数只在本地作用域有效 输出结果,抛出异常:
Traceback (most recent call last):
File "C:/python/return_value.py", line 6, in <module>
inner()
NameError: name 'inner' is not defined

举例 3:

def outer():
def inner():
print("inner")
print("outer")
inner() outer() 输出结果:
outer
inner

总结:

此节介绍了函数的返回值、返回值的作用,指定与不指定返回值时的不同,返回值类型,以及函数嵌套时返回值的使用。

Python 函数返回值的更多相关文章

  1. python函数返回值

    2016-08-09  15:01:38 python函数返回值使用return语句,可以返回任意类型的数.如果return语句执行,它之后的所有语句都不再执行. def func(x,y): pri ...

  2. Python 函数返回值、作用域

    函数返回值 多条return语句: def guess(x): if x > 3: return "> 3" else: return "<= 3&qu ...

  3. python 函数返回值笔记

    今天学习python时候学习到闭包和柯里化 感觉看概念时候不好理解,自己写下大概就明白点了 柯里化如下 定义一个加法函数 def add(x, y): return x + y 这是没有柯里化之前的函 ...

  4. day09 python函数 返回值 参数

    day09 python   一.函数     1.函数         函数是对功能的封装         语法:         定义函数:             def 函数名(形参):    ...

  5. python 函数返回值(总结)

    关键字:return 没有返回值的叫过程 def test1(): msg="我是一个过程" print(msg) 有return的叫函数 def test02(): msg=&q ...

  6. Python 函数返回值类型

    [ i for i in dir(set) if not i.startswith('_') ]   

  7. Python学习教程(learning Python)--2.3.4Python函数返回值

    本节讨论Python函数返回值问题. Python和C语言一样,也可以在函数结束时返回一个值.但在定义自己的Python函数时,是不需要指定返回值数据类型的,这和Python不关心变量的数据类型是一致 ...

  8. Python return语句 函数返回值

    return语句是从python 函数返回一个值,在讲到定义函数的时候有讲过,每个函数都要有一个返回值.Python中的return语句有什么作用,今天就来仔细的讲解一下. python 函数返回值 ...

  9. python学习——函数返回值及递归

    返回值 return语句是从python 函数返回一个值,在讲到定义函数的时候有讲过,每个函数都要有一个返回值.Python中的return语句有什么作用,今天小编就依目前所了解的讲解一下.pytho ...

随机推荐

  1. TableView的性能优化

    现在市场上的iOS应用程序界面中使用最多的UI控件是什么? 答案肯定是UITableView,几乎每一款App都有很多的界面是由UITableView实现的,所以为了做出一款优秀的App,让用户有更好 ...

  2. python抓取zabbix图形,并发送邮件

    最近十九大非常烦,作为政府网站维护人员,简直是夜不能寐.各种局子看着你,内保局,公安部,360,天融信,华胜天成,中央工委,政治委员会... 360人员很傻X,作为安全公司,竟然不能抓到XX网站流量, ...

  3. bzoj 2243 [SDOI2011]染色(树链剖分+线段树合并)

    [bzoj2243][SDOI2011]染色 2017年10月20日 Description 给定一棵有n个节点的无根树和m个操作,操作有2类: 1.将节点a到节点b路径上所有点都染成颜色c: 2.询 ...

  4. event模拟数据库链接

    from threading import Thread,Event,currentThread import time e = Event() def conn_mysql(): count = 1 ...

  5. UVa 10954,Add All

    Huffman编码简化版,优先队列搞定. 1A 调试的时候发现一个问题..木有想明白...问题代码里给出,哪位大神给解释下. #include <iostream> #include &l ...

  6. mysql必知必会系列(一)

    mysql必知必会系列是本人在读<mysql必知必会>中的笔记,方便自己以后查看. MySQL. Oracle以及Microsoft SQL Server等数据库是基于客户机-服务器的数据 ...

  7. LeetCode 162. Find Peak Element (找到峰值)

    A peak element is an element that is greater than its neighbors. Given an input array where num[i] ≠ ...

  8. 微信公众号支付|微信H5支付|微信扫码支付|小程序支付|APP微信支付解决方案总结

    最近负责的一些项目开发,都用到了微信支付(微信公众号支付.微信H5支付.微信扫码支付.APP微信支付).在开发的过程中,在调试支付的过程中,或多或少都遇到了一些问题,今天总结下,分享,留存. 先说注意 ...

  9. [Bayesian] “我是bayesian我怕谁”系列 - Latent Variables

    下一章有意讲讲EM和变分推断的内容. EM和变分推断的内容能Google到很多,虽然质量乘次不齐,但本文也无意再赘述那么些个细节. 此处记录一些核心思想,帮助菜鸡形成整体上的认识.不过,变分推断也不是 ...

  10. ios微信支付 v3

    V2版本和V3版本存在很大的差异. 1. 从成功通过微信支付商户的资料审核返回的邮件开始: 你可以获得这些参数  appid,appSecret,partnerID,    partnerKey(从平 ...