请启用 Javascript 以查看内容

Python3 多返回值说明

 ·   ·  ☕ 2 分钟  ·  ✍ ayunw

前言

一般在定义完一个python的函数或者说方法以后,写完这个函数或者方法的逻辑,在最后都会进行return,也许会直接写return(这种情况返回值默认就是None),或者return value1这种return单个返回值的形式。然后在其他的函数或者方法中调用这个函数或者方法的时候就能直接拿到返回值。那当我们存在多个返回值的时候,比如return value1, value2这种情况怎么办?要怎么拿到其中某一个我想要的返回值呢?

案例说明

案例一:函数体中只有return,怎么获取return的值并打印?

函数体代码中只有一个return,我想获取返回值,并且打印输出return的值怎么办?

1
2
3
4
5
6
7
8
9
def hello(name):
    return 'Hello ' + name


res = hello('allenjol')
print(hello('allenjol'))
print(res)
# output: Hello allenjol
# output: Hello allenjol

案例二:函数存在多个返回值怎么获取其中某一个返回值?

如果你想从一个函数里返回两个变量而不是一个呢? 新手们有若干种方法。最著名的方法,是使用 global 关键字。让我们看下这个没用的例子(能不用这种方法就不要用,别自己坑自己):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
def func():
    global name
    global age
    name = "allenjol"
    age = 26

func()
print(name)
# Output: allenjol

print(age)
# Output: 26

注意: 重要的事情说三遍:不要试着使用上述方法,不要试着使用上述方法!不要试着使用上述方法!

当函数中存在多个返回值的时候,默认返回值是一个元组,也就是说下面的 return name, age其实就是 return (name, age),只不过我们通常不加括号,加括号也没问题。同样的你也可以将返回值设置为列表或者字典。

在函数结束时,返回一个包含多个值的 tuple(元组),list(列表)或者 dict(字典),来解决这个问题。这是一种可行的方式,而且使用起来像一个黑魔法:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
def func():
    name = "allenjol"
    age = 26
    return (name, age)

func_data = func()
print(func_data[0])
# Output: allenjol

print(func_data[1])
# Output: 26

或者按照更常见的return方式:

1
2
3
4
def func():
    name = "allenjol"
    age = 26
    return name, age

这是一种比列表和字典更好的方式。不要使用 global 关键字,除非你知道你正在做什么。global 也许在某些场景下是一个更好的选择(但其中大多数情况都不是)。所以,不要自己给自己挖坑,特别是生产环境,会死人的!

参考来自:https://eastlakeside.gitbook.io/interpy-zh/global_return/multiple_return_values

您的鼓励是我最大的动力
alipay QR Code
wechat QR Code

Avatar
作者
ayunw
尼古丁的绑架没有救赎,我们皆是上瘾的囚徒


目录