Python - 如何从返回多个变量的函数访问函数中的变量

问题描述 投票:0回答:2

Python 新手,并尝试放弃使用

global
关键字作为函数之间传递变量值的一部分。

我知道

return
返回一个元组 - 但我希望能够通过名称而不是通过索引来引用我正在调用的变量,并且在我学习的这个阶段我想避免上课。

这是一种可行的方法还是有更标准或“pythonic”的方法?似乎这需要包括被调用函数返回的所有变量?到目前为止 - 这是我发现的唯一一种在函数之间传递多个变量值的方法。

def myfunct_01():
    
    my_var_01 = 1
    my_var_02 = "stuff"
    my_var_03 = (10 , 9 , 8)
    
    return my_var_01, my_var_02, my_var_03

myfunct_01()

def myfunct_02():
    
    my_var_01, my_var_02, my_var_03 = myfunct_01()
    
    my_var_04 = my_var_01 + 1
    my_var_05 = my_var_03[0] - my_var_03[1]

    return my_var_04, my_var_05

myfunct_02()
python function variables global-variables global
2个回答
0
投票

您可以使用 python 字典将变量作为键来引用它们的名称。

def myfunct_01():
    d1 = {}
    d1['my_var_01'] = 1
    d1['my_var_02'] = "stuff"
    d1['my_var_03'] = (10 , 9 , 8)
    
    return d1

myfunct_01()

def myfunct_02():
    
    d1 = myfunct_01()
    my_var_01 = d1['my_var_01']
    my_var_02 = d1['my_var_02']
    my_var_03 = d1['my_var_03']
    
    d2 = {}
    d2['my_var_04'] = my_var_01 + 1
    d2['my_var_05'] = my_var_03[0] - my_var_03[1]

    return d2

myfunct_02()

0
投票

你可以使用解构赋值,这很简单:

first, second = (1,2)
print(fist, second)
# 1 2

所以在你的例子中你可以这样调用函数:

my_var_01, my_var_02, my_var_03 = myfunct_01()

您也可以解包列表中的部分项目。

first, *rest = (1,2,3,4)
print(first, *rest)
# 1 [2,3,4]
© www.soinside.com 2019 - 2024. All rights reserved.