使用Python中其他函数的变量

时间:2016-02-08 12:58:15

标签: python

我正在学习python,目前正在编写一个必须分成函数的简单程序。我的问题是我有一个函数应该为四个不同的变量返回字符串,然后应该在另一个函数中使用。

E.g。

def function1():
   var1 = input("Write something: ")
   var2 = input("Write something: ")
   var3 = input("Write something: ")

def function2():
   print(var1)
   print(var2)
   print(var3)

function1()
function2()

这给出了一条错误消息,因为在function2的框架中没有定义var1。该如何解决?为清楚起见,插图非常简化,但如果需要,我可以发布更具体的内容。

4 个答案:

答案 0 :(得分:2)

返回function1中的变量:

def function1():
    var1 = input("Write something: ")
    var2 = input("Write something: ")
    var3 = input("Write something: ")
    return var1, var2, var3

并在function2中创建参数:

def function2(var1, var2, var3):
    print(var1)
    print(var2)
    print(var3)

像这样打电话给他们:

var1, var2, var3 = function1()
function2(var1, var2, var3)

答案 1 :(得分:1)

这不是函数的用途。

有一个名为作用域的东西,它基本上表示在函数中声明的变量是 local 到该函数,并且不能被其他任何东西访问。如果需要将值传递给函数,请使用参数。

这一切都应该被你当前正在阅读的Python介绍所涵盖 - 只需阅读一两页:)

答案 2 :(得分:1)

正确的方法是从函数返回值并通过输入参数传递它们:

def function1():
    var1 = input("Write something: ")
    var2 = input("Write something: ")
    var3 = input("Write something: ")
    return var1, var2, var3


def function2(a, b, c):
    print(a)
    print(b)
    print(c)

v1, v2, v3 = function1()
function2(v1, v2, v3)

我重命名了一些参数来强调任何地方都没有名称关系。显式返回并显式传递所有值。

答案 3 :(得分:0)

使用您当前的示例,更好的方法是重复使用相同的函数三次:

def function1():
    return input("Write something: ")

def function2(var):
   print(var)

for i in range(0, 3):
    var = function1()
    function2(var)

但最好还是返回function1中的变量,然后将其传递给function2

def function1():
   var1 = input("Write something: ")
   var2 = input("Write something: ")
   var3 = input("Write something: ")
   return var1, var2, var3

def function2(var1, var2, var3):
   print(var1)
   print(var2)
   print(var3)

var1, var2, var3 = function1()
function2(var1, var2, var3)

这取决于您的具体问题。