#python #variables #swap
#python #переменные #поменять местами
Вопрос:
Я хочу создать функцию, в которой, если я дам 2 переменные, она поменяет их значения ГЛОБАЛЬНО. например, a = 1, b = 2. Я хочу, чтобы это выглядело как a = 2, b = 1. Вот код
def swap(n,n2):
n,n2 = n2,n
print(n,n2)
Я также пробовал этот код:
def swap(n,n2):
temp = n
n = n2
n2 = temp
global x
global x2
x = n
x2 = n2
print(x,x2)
Я попробовал это, но это не поменяло переменные глобально. Помогите, пожалуйста.
Комментарии:
1. Нет. Не так работают переменные Python.
2. Совет, который вы не хотите слышать, заключается в том, чтобы не использовать глобальные переменные, и, более того, изменение глобальных переменных внутри случайной функции не выглядит хорошей практикой, которая может укусить вас позже. Каков ваш вариант использования?
3.
a, b = b, a
Недостаточно для вашего?4.
global
доступ к глобальной области видимости
Ответ №1:
Вам просто нужно ссылаться на глобальные переменные внутри функции.
Смотрите приведенный ниже код.
n=1
n2=2
def swap():
global n,n2
n,n2 = n2,n
print(n,n2)
swap()
print(n,n2)
Вывод
1 2
2 1
Ответ №2:
Ну, я верю, что вы можете сделать что-то вроде этого:
a = 1
b = 2
def swap(var1, var2):
var1, var2 = var2, var1
return var1, var2
a, b = swap(a, b)
Ответ №3:
Замена переменных внутри функции влияет только на область действия функции.
Используйте globals()
для доступа к словарю глобальной области видимости:
global sabich1
global sabich2
sabich1, sabich2 = 1, 2
def swap(n,n2):
globals()[n], globals()[n2] = globals()[n2], globals()[n]
swap('sabich1', 'sabich2')
# 2 1
print(sabich1, sabich2)
Ответ №4:
Поскольку Python передается по значению, а не по ссылке. Таким образом, будет сформирована новая копия параметров, и они были заменены не оригинальными.