【问题标题】:How to modify a list within function, from another function [closed]如何从另一个函数修改函数内的列表[关闭]
【发布时间】:2018-07-29 17:02:24
【问题描述】:

我有以下代码:

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


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


func1()

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

【问题讨论】:

标签: python list function global-variables


【解决方案1】:

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

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

但是,简而言之,理想情况下,您希望您的程序尽可能可预测。当你的代码不可避免地没有做你认为应该做的事情时,你希望它很容易追踪你的错误。全局状态使这非常困难。这本质上是因为您的代码库的某些随机部分可能只是以一种不太容易追踪的方式更改您下方的x。

你应该怎么做?在这种情况下,可能只需将列表 x 传递给每个想要使用它的函数。然后很容易一眼看出x 可能会改变的地方,因为您必须将它传递给任何可能改变它的函数。您可以更轻松地跟踪程序流程中数据的变化情况。

【讨论】:

    猜你喜欢
    • 2012-06-05
    • 1970-01-01
    • 1970-01-01
    • 2015-01-31
    • 2014-03-30
    • 2019-07-15
    • 2023-01-11
    • 2023-02-01
    • 1970-01-01
    相关资源
    最近更新 更多