函数的返回值

函数的返回值

刚刚我们就写了一个函数,这个函数可以帮助我们计算字符串的长度,并且把结果打印出来。但是,这和我们的len方法还不是太一样。哪里不一样呢?以前我们调用len方法会得到一个值,我们必须用一个变量来接收这个值。

str_len = len('hello,world')

这个str_len就是‘hello,world’的长度。那我们自己写的函数能做到这一点么?我们也来试一下。

函数调用的结果

#函数定义
def mylen():
    """计算s1的长度"""
    s1 = "hello world"
    length = 0
    for i in s1:
        length = length+1
    print(length)

#函数调用
str_len = mylen()
print('str_len : %s'%str_len)

 

很遗憾,如果你执行这段代码,得到的str_len 值为None,这说明我们这段代码什么也没有给你返回。

那如何让它也想len函数一样返回值呢?

#函数定义
def mylen():
    """计算s1的长度"""
    s1 = "hello world"
    length = 0
    for i in s1:
        length = length+1
    return length

#函数调用
str_len = mylen()
print('str_len : %s'%str_len)

我们只需要在函数的最后加上一个return,return后面写上你要返回的值就可以了。

接下来,我们就来研究一下这个return的用法。

return关键字的作用

  return 是一个关键字,在pycharm里,你会看到它变成蓝色了。你必须一字不差的把这个单词给背下来。

  这个词翻译过来就是“返回”,所以我们管写在return后面的值叫“返回值”

要研究返回值,我们还要知道返回值有几种情况:分别是没有返回值、返回一个值、返回多个值

没有返回值

  不写return的情况下,会默认返回一个None:我们写的第一个函数,就没有写return,这就是没有返回值的一种情况。

不写return 

#函数定义
def mylen():
    """计算s1的长度"""
    s1 = "hello world"
    length = 0
    for i in s1:
        length = length+1
    print(length)

#函数调用
str_len = mylen()
#因为没有返回值,此时的str_len为None
print('str_len : %s'%str_len)

  只写return,后面不写其他内容,也会返回None,有的同学会奇怪,既然没有要返回的值,完全可以不写return,为什么还要写个return呢?这里我们要说一下return的其他用法,就是一旦遇到return,结束整个函数

只写return  

def ret_demo():
    print(111)
    return
    print(222)

ret = ret_demo()
print(ret)

 

      return None:和上面的两种情况一样,我们一般不这样写。

def ret_demo():
    print(111)
    return None
    print(222)

ret = ret_demo()
print(ret)

 

返回一个值

      刚刚我们已经写过一个返回一个值的情况,只需在return后面写上要返回的内容即可。  

#函数定义
def mylen():
    """计算s1的长度"""
    s1 = "hello world"
    length = 0
    for i in s1:
        length = length+1
    return length

#函数调用
str_len = mylen()
print('str_len : %s'%str_len)

 

  注意:return和返回值之间要有空格,可以返回任意数据类型的值

返回多个值

  可以返回任意多个、任意数据类型的值

def ret_demo1():
    '''返回多个值''' 
    return 1,2,3,4


def ret_demo2():
    '''返回多个任意类型的值'''
    return 1,['a','b'],3,4

ret1 = ret_demo1()
print(ret1)
ret2 = ret_demo2()
print(ret2)

 

  返回的多个值会被组织成元组被返回,也可以用多个值来接收

def ret_demo2():
    return 1,['a','b'],3,4

#返回多个值,用一个变量接收
ret2 = ret_demo2()
print(ret2)

#返回多个值,用多个变量接收
a,b,c,d = ret_demo2()
print(a,b,c,d)

#用多个值接收返回值:返回几个值,就用几个变量接收
a,b,c,d = ret_demo2()
print(a,b,c,d)

  原因:  

>>> 1,2  #python中把用逗号分割的多个值就认为是一个元组。
(1, 2)
>>> 1,2,3,4
(1, 2, 3, 4)
>>> (1,2,3,4)
(1, 2, 3, 4)

 

#序列解压一
>>> a,b,c,d = (1,2,3,4)
>>> a
1
>>> b
2
>>> c
3
>>> d
4
#序列解压二
>>> a,_,_,d=(1,2,3,4)
>>> a
1
>>> d
4
>>> a,*_=(1,2,3,4)
>>> *_,d=(1,2,3,4)
>>> a
1
>>> d
4
#也适用于字符串、列表、字典、集合
>>> a,b = {'name':'eva','age':18} 
>>> a
'name'
>>> b
'age'
posted @ 2020-03-04 20:04  大熊子  阅读(618)  评论(0编辑  收藏  举报