Ich schreibe ein Programm, das eine erste Sequenz und führt 3 Funktionen auf und spuckt dann die 3 Antworten aus, aber ich möchte die ursprüngliche Variable intakt, so dass es wiederverwendet werden kann. Von im Forum habe ich festgestellt, dass die Variable innerhalb einer Funktion lokal sein sollte, aber es scheint global zu handeln.Variable innerhalb einer Funktion scheint nicht lokal
from collections import deque
from sys import exit
initial_state = (1,2,3,4,5,6,7,8)
initial_state = deque(initial_state)
def row_exchange(t):
t.reverse()
return t
def rt_circ_shift(t):
t.appendleft(t[3])
del t[4]
t.append(t[4])
del t[4]
return t
def md_clk_rot (t):
t.insert(1,t[6])
del t[7]
t.insert(3,t[4])
del t[5]
t.insert(4,t[5])
del t[6]
return t
print(row_exchange(initial_state))
print(initial_state)
print(rt_circ_shift(initial_state))
print(md_clk_rot(initial_state))
Ich würde erwarten, zu bekommen:
deque([8, 7, 6, 5, 4, 3, 2, 1])
deque([1, 2, 3, 4, 5, 6, 7, 8])
deque([4, 1, 2, 3, 6, 7, 8, 5])
deque([1, 7, 2, 4, 5, 3, 6, 8])
sondern ich:
deque([8, 7, 6, 5, 4, 3, 2, 1])
deque([8, 7, 6, 5, 4, 3, 2, 1])
deque([5, 8, 7, 6, 3, 2, 1, 4])
deque([5, 1, 8, 6, 3, 7, 2, 4])
also warum ist innerhalb der Funktion nicht meine lokale Variable? gibt es eine Möglichkeit, die Ausgabe innerhalb der Funktion umbenennen, so dass es nicht die gleiche Kennung initial_state verwendet? Ich bin ziemlich neu in der Programmierung, so dass über die Erklärung geschätzt werden würde.