如何在另一个函数中修改函数中的列表

时间:2018-07-29 17:02:24

标签: python list function global-variables

我有以下代码:

x = []
def func1():
    global x
    x = [1,2,3]
    print x


def func2():
    global x
    x.append(4)


func1()

我试图将func2中的列表追加到func1中,并在第一个函数中显示这些更改。这可能吗?

1 个答案:

答案 0 :(得分:3)

这当然是有可能的(除了您实际上没有在任何地方调用func2之外,您的代码基本上是正确的),但通常不建议这样做。

要全面了解为什么全局状态(在您的示例中为x)通常不是一个好主意,请参见https://softwareengineering.stackexchange.com/questions/148108/why-is-global-state-so-evil。另外,您可以在网上找到无数的文章。

但是,简短地说,理想情况下,您希望程序尽可能地可预测。当您的代码不可避免地不执行您认为应该做的事情时,您希望它很容易找出错误。全局状态使此操作非常困难。这本质上是因为您的代码库中的某些随机部分 可能会以一种不太容易跟踪的方式从您的下方更改x

您应该怎么做?在这种情况下,可能只需将列表x传递到每个要使用它的函数中。一目了然,x可能会发生变化,这非常容易,因为您必须将其传递给可能会更改它的任何函数。您可以更轻松地跟踪程序中数据的变化方式。