没有 link 的开始信息复制到已处理的变量

Start information copy without link to processed variable

我正在尝试创建一个变量的起始副本,我想在最后将其与处理后的变量进行比较。这是我目前拥有的:

def sudoku_solver(sudoku):
    global start_sudoku
    start_sudoku = copy.deepcopy(sudoku)
    solution(sudoku)
    ......

我试图将其定义为全局变量,因为我有第二个 def function 用于处理解决方案,最后我想比较这两个解决方案是否相同:

def self.solution(sudoku):
    ......
    if (len(sudoku) == len(start_sudoku)) == True:
        if possible(y, x, n):
    ......

def self.possible(y, x, n):

然而,当我到达代码末尾时,这两项总是相同的。我检查过,ID 不同,但它们最终总是相同的。全局变量如何保持独立于第一个,只保持信息的第一个视图?

您的逻辑表明您需要状态,这正是 classes 的用途。使用 class 比处理全局变量更简洁。

class SudokuSolver:
    def __init__(self, sudoku):
        self.start_sudoku = copy.deepcopy(sudoku)
        self.solution(sudoku)
        ...

    def solution(self, sudoku):
        ...
        if len(sudoku) == len(self.start_sudoku):
            if self.possible(y, x, n):
        ...

    def possible(self, y, x, n):
        ...