gpt4 book ai didi

python - 制作全局变量的本地副本

转载 作者:行者123 更新时间:2023-12-04 00:56:34 24 4
gpt4 key购买 nike

我可能遗漏了一些非常明显的东西,但是如何创建具有相同名称的全局变量的本地副本?我有类似的东西:

d = {"one": 1, "two": 2, "three": 3}

def foo():
d = d.copy()
d["four"] = 4

我想在内部范围内创建一个 d 的副本,我可以随意修改它而不影响全局版本。这会提示 d 是赋值前的引用,这很有意义,因为它被解释为局部变量。如果我将其声明为全局的,这将对其进行修改。

如果我不介意它有不同的名称,这将是微不足道的,例如:d_local = d.copy(),但在这种情况下这将是一个大麻烦,而不仅仅是一个找到并替换一个。

如果唯一的解决方案是使用新名称并处理后果,请告诉我。

最佳答案

通常使用同名的局部变量和全局变量是一种非常糟糕的做法,因为它会引起混淆。您可以使用 d 作为参数,或者只是使用不同的名称。但是,如果您真的想保持代码结构不变(我不推荐这样做),您可以在全局范围内定义一个返回 d 副本的函数。因此:

d = {"one": 1, "two": 2, "three": 3}

def copyD():
return d.copy()

def foo():
d = copyD()
d["four"] = 4

正如@rici 所指出的,可以使用 global 关键字在局部范围内定义函数:

d = {"one": 1, "two": 2, "three": 3}

def foo():
def copyD():
global d
return d.copy()
d = copyD()
d["four"] = 4

这段代码更好,因为 copyD 函数真的不会在其他任何地方使用。

关于python - 制作全局变量的本地副本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62164888/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com