как выполнить операцию сложения для глобальной переменной внутри функции
row=3
id=3
def KeyMove(matrix:list, ind0:vars, ind1:vars, math_symbols:str, line:vars 'принимает или row или id', ind_number:int, switch_coor=True):
global row, id, plane1
system('cls')
matrix[ind0][ind1] = 0
if math_symbols == 'plus':
line += 1
elif math_symbols == 'minus':
line -= 1
try:
AddPlayer()
except IndexError:
line = ind_number
if switch_coor is True:
print(ind0,ind1)
elif switch_coor is False:
pass
VisualMatrix(matrix)
return line, ind_number
KeyMove(matrix=plane1, ind0=row, ind1=id, math_symbols='minus', line=row, ind_number=7)
Проблема в том, что line+=1 или line-=1 не меняют значение глобальных переменных row, id. я нашёл два решения проблемы, но 1. мне нужно чтобы я мог записать любой аргумент в line и 2. мне нужно чтобы решение проблемы оставалось в функции, а не выходила за её пределы, по типу сначала func():..., а потом a=func(5). так же это касается except IndexError: line = ind_number, но если решится первая проблема то и второй касаться смысла нету.
Ответы (1 шт):
Автор решения: Gleb
→ Ссылка
Примитивное значение передается по значению, иначе нельзя. Можно передавать какой то объект, например список, тогда он будет передаваться по ссылке и значения изменятся Например
row=[3]
def SomeFun(val):
val[0]+=1
SomeFun(row)
row[0] == 4