没有 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):
...
我正在尝试创建一个变量的起始副本,我想在最后将其与处理后的变量进行比较。这是我目前拥有的:
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):
...