gpt4 book ai didi

Python 中的函数设置全局变量(无意)

转载 作者:行者123 更新时间:2023-12-01 13:36:36 25 4
gpt4 key购买 nike

我不知道这是否是其他人遇到的问题,但我在 python 中有这样的代码:

def makemove(board,move,val):
new=board
new[move[0]][move[1]]=val
return new

我的问题是,如果我通过简单地执行 makemove(game,[0,1],-1) 来使用此函数,其中 game 等于 [[0,0,1],[0,1,0],[1 ,0,0]] 变量 game 变为 [[0, -1, 1], [0, 1, 0], [1, 0, 0]]。

我试图研究设置全局变量的函数,但因此我没有找到一种方法来防止 makemove() 设置您放入其中的变量。有什么明显的东西是我遗漏的吗?

最佳答案

您需要克隆board

import
new = copy.deepcopy(board)

参见 https://stackoverflow.com/a/2612815/93910其他方法。

您的代码设置了一个变量的元素,该变量是一个“引用”。换句话说,您的变量 new 实际上是对 board 的数组引用,即它指向相同的内存位置。因此,当您更改 new 时,原始变量 board 也会更改。

这是关于如何思考这个问题的另一个答案:https://stackoverflow.com/a/9697367/93910

关于Python 中的函数设置全局变量(无意),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42840156/

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