使用一个函数中的列表,在另一个函数python中

时间:2014-03-27 18:04:48

标签: python python-2.7

我是python的新手。这可能是一个简单的问题,但如果我有许多相互依赖的函数,我将如何从一个函数访问列表以在另一个函数中使用。

因此...

def function_1():
    list_1=[]

def function_2():
    list_2= [2*x for x in list_1]

def function_3():
    list_3= [x * y for x, y in zip(list_1, list_2)]

这不是确切的代码,但这是我的问题的想法。我只是将它们放在一个函数中,但我需要将它们分开。

4 个答案:

答案 0 :(得分:1)

这样做的正确方法是使用一个类。类是一个具有内部变量(在您的情况下,三个列表)和方法(可以访问内部方法的函数)的对象。所以,这将是:

class Foo(object):
    def __init__(self, data=None):
        self.list_1 = data if not data is None else []

    def function_2():
        self.list_2 = [2 * x for x in self.list_1]

等等。为了调用它:

foo = Foo()  # list_1 is empty
foo2 = Foo([1,2,3]) # list_1 is not empty
foo2.function_2()   
print foo2.list_2
# prints [2, 4, 6]

答案 1 :(得分:0)

使它们成为参数并返回值:

def function_1():
    return []

def function_2(list_1):
    return [2*x for x in list_1]

def function_3(list_1, list_2):
    return [x * y for x, y in zip(list_1, list_2)]

(这表明function_1并不值得拥有......)

答案 2 :(得分:0)

确切的方法取决于你想要的工作方式,但这是一个简单的例子:

def function_1():
    return []

def function_2():
    return [2*x for x in function_1()]

def function_3():
    return [x * y for x, y in zip(function_1(), function_2())]

关键是功能通常不仅仅是"做"事情,他们返回事物。如果在一个函数中有一个值要在另一个函数中使用,则第一个函数应该返回该值。第二个函数应调用第一个函数,并使用其返回值。

答案 3 :(得分:0)

功能基本上是黑盒子 - 外面的世界并不真正知道里面发生了什么或者那里存在什么变量。从外部看,其他代码只能看到内容(函数的参数)和结果(返回值)。

因此,如果你的函数计算了一些要在别处使用的值,那么它应该是return作为函数的结果。

如,

def square(x):
    return x * x

取一个数字,计算它的平方,然后返回它。

然后你可以这样做:

print(square(5))

它将打印25。

因此,在您的情况下,您可以返回列表并在其他功能中使用它们,其他答案显示:

def function_1():
    return []

def function_2():
    return [2*x for x in function_1()]

def function_3():
    return [x * y for x, y in zip(function_1(), function_2())]