Python 使用一个函数中的列表,在另一个函数中
我是python新手。这可能是一个简单的问题,但如果我有许多相互依赖的函数,我将如何从一个函数访问列表以在另一个函数中使用 所以Python 使用一个函数中的列表,在另一个函数中,python,python-2.7,Python,Python 2.7,我是python新手。这可能是一个简单的问题,但如果我有许多相互依赖的函数,我将如何从一个函数访问列表以在另一个函数中使用 所以 这不是确切的代码,但这就是我的问题所在。我只想把它们放在一个函数中,但我需要它们分开。使它们成为参数并返回值: def function_1(): return [] def function_2(list_1): return [2*x for x in list_1] def function_3(list_1, list_2): re
这不是确切的代码,但这就是我的问题所在。我只想把它们放在一个函数中,但我需要它们分开。使它们成为参数并返回值:
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)]
(这表明
功能\u 1
不太值得拥有……确切的方式取决于您希望事情如何运作,但这里有一个简单的例子:
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())]
关键的一点是,函数通常不仅仅是“做”事情,它们还返回一些东西。如果一个函数中有一个值要在另一个函数中使用,则第一个函数应返回该值。第二个函数应该调用第一个函数,并使用它的返回值。函数基本上是黑匣子——外部世界并不真正知道内部发生了什么或存在哪些变量。从外部看,其他代码只看到传入的内容(函数的参数)和传出的内容(返回值) 因此,如果您的函数计算了一些将在其他地方使用的值,那么它应该作为函数的结果返回 例如: 获取一个数字,计算其平方,然后返回它 然后你可以做:
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())]
正确的方法是使用类。类是一个具有内部变量(在本例中为三个列表)和方法(可以访问内部方法的函数)的对象。因此,这将是:
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]
不能,这些列表是这些函数范围内的局部变量。你可以制作一个模块级列表,你可以将它们声明为
global
s,但我不鼓励这样做。它通常被认为是糟糕的形式,在范围上可能会变得相当混乱
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]