在函数之间传递变量:调用返回的变量还是使用类?

时间:2019-04-05 19:38:07

标签: python-3.x

我发现了一种在函数之间传递变量的简单方法。

但是,我很好奇,看看其他方法是否更简单,例如通过创建一个类。或者,实际上,如果我传递变量的方法有问题。

我最近在努力理解如何在函数之间传递变量。

对于这个问题,有几个针对新手的StackOverflow问题(请参阅hereherehere)。但是,许多答案往往过于特定于提问者提供的代码片段。

我想了解一般的工作流程。也就是说,例如,如何将variableA传递给functionA,进行操纵,然后传递给functionB,再次更改,然后在functionC中输出。

我想我有一个解决方案:

def main():
    output()

def function1():
    sentence = ("This is short.")   # here is a string variable
    value = (10)                    # here is a number variable
    return sentence, value          # they are returned

def firstAddition():
    sentence, value = function1()   # variables recalled by running function1()
    add1stSentence = "{}at is longer.".format(sentence[0:2]) # string changed
    add1stValue = 2 * value                                  # number changed
    return add1stSentence, add1stValue    # the changed values are returned

def secondAddition():               # This function changes variables further
    add1stSentence, add1stValue = firstAddition()
    add2ndSentence = "{} This is even longer.".format(add1stSentence)
    add2ndValue = 2 * add1stValue
    return add2ndSentence, add2ndValue

def output():                       # function recalls all variables and prints
    sentence, value = function()
    add1stSentence, add1stValue = firstAddition()
    add2ndSentence, add2ndValue = secondAddition()
    print(sentence)
    print(str(value))
    print(add1stSentence)
    print(str(add1stValue))
    print(add2ndSentence)
    print(str(add2ndValue))

以上代码的输出如下:

这很短。 10 那更长。 20 那更长。这甚至更长。 40

原始句子和值变量在函数之间传递。

我传递变量的方式有四个步骤:

  1. 构建函数A,用于操纵变量;
  2. 在functionA的末尾返回这些变量;
  3. 在functionB的开头,调用每个变量,即= functionA;
  4. functionB操纵变量并再次返回它们以进行进一步操纵,或输出变量。

我的问题是:

(a)我的方式是否被接受?

(b)是否有更好或更优雅的方法在函数之间传递变量?

1 个答案:

答案 0 :(得分:0)

将变量传递给函数的方法是通过函数自变量(也称为函数参数)。

根据您的情况,您可以修改functionB以接受输入。您的示例有点复杂,但是我将其简化为您更容易理解。

现在,您实际上正在执行以下操作:

def functionA():
    return 12

def functionB():
    return 5

def caller():
    holder = functionA() + functionB()
    print(holder)

通常,此可以起作用,但是更喜欢执行以下操作:

def functionA():
   return 5

def functionB(number):
   return(number+5)

def caller():
   holder = functionA()
   output = functionB(holder)
   print(output)

甚至:

def caller():
   print(functionB(functionA()))

您可以将功能的输出传递给其他功能。

在继续进行更复杂的事情之前,我会详细了解python函数https://www.tutorialspoint.com/python3/python_functions.htm