Я немного запутался в отношении переменных в Python, просто искал пояснения.
В следующем коде я передам глобальную переменную в свою собственную функцию Python, которая просто принимает значение и умножает его на 2. Очень просто. Не возвращает переменную после. Выходные данные функции print в конце печатают 10500, а не 21000, указывая, что локальная переменная, созданная в функции, фактически не редактировала глобальную переменную, которая была передана, а скорее использовала значение в качестве аргумента.
balance = 10500
def test(balance):
balance = balance * 2
test(balance)
print(balance)
Однако в моем втором фрагменте кода здесь, когда я передаю список / массив в отдельную функцию для пузырьковой сортировки, редактируется реальный массив, а не функция, использующая только ценности.
def bubble_sort(scores):
swapped = True
while swapped:
swapped = False
for i in range(0, len(scores)-1):
if scores[i] > scores[i+1]:
temp = scores[i]
scores[i] = scores[i+1]
scores[i+1] = temp
swapped = True
scores = [60, 50, 60, 58, 54, 54]
bubble_sort(scores)
print(scores)
Теперь, когда я распечатываю свой список результатов, он сортируется. Меня смущает, почему верхняя функция не изменила глобальную переменную, которая была ей передана, а вторая -? Я понимаю, что использование ключевого слова global в функциях означает, что я все еще могу писать код, который будет редактировать глобальную переменную в моих собственных функциях, но, возможно, мне не хватает базовых c понимания.