运行函数后未作为参数传递的变量发生更改

问题描述

下面是我编写的代码,用于检查Sudoku板(这里称为板)是否有解决方案。

每当我运行功能resolve_board时,board_copy和board变量都会改变。 board变量将与board_copy变量匹配。我希望board_copy能够改变,因为Python中的变量是通过赋值传递的。为什么更换板子?它没有传递给函数,所以我不希望函数影响它。

board_copy = board                
solve_board(board_copy)

def solve_board(board):
    for row in range(9):
        for col in range(9):
            if board[row][col] == 0:
                for num in range(1,10):
                    if valid_move(row,col,num,board):
                        board[row][col] = num
                        if solve_board(board,"possible"):
                            return True
                        board[row][col] = 0
                return False 
    return True

解决方法

该行:

board_copy = board

指出board_copy指向board,所以如果您也更改了其他任何更改。

它们是指向同一对象的不同名称。