Как изменить переменную в python
Перейти к содержимому

Как изменить переменную в python

  • автор:

Обмен значений переменных

Обмен значений переменных

Если попытаться сделать такой обмен, сначала присвоив первой переменной значение второй, а второй — значение первой, ничего не получится. Допустим, есть две переменные a и b . При этом a = 5 и b = 6 . Если выполнить выражение a = b , то переменная a будет хранить число 6, также как и b . Число 5 будет утеряно. После этого выражение b = a теряет смысл, так как b будет присвоено его же текущее значение. В данном случае 6.

Поэтому в программировании при обмене значений переменных обычно вводят третью, играющую роль буфера (буферная переменная). В ней сохраняют значение первой переменной, потом первой присваивают значение второй, a новое значение для второй берут из буфера.

Таким образом классический алгоритм обмена значений двух переменных выглядит так:

a = 5 b = 6 buf = a a = b b = buf

Полная версия программы, которая запрашивает ввод двух значений с клавиатуры:

a = input('a: ') b = input('b: ') buf = a a = b b = buf print('a =', a) print('b =', b) 

Пример выполнения программы:

a: 91 b: 162 a = 162 b = 91

Есть другой способ, позволяющий не использовать третью переменную, — арифметический. Он подходит только для чисел.

a = 5 b = 7 a = a + b # 12 b = a - b # 12-7=5 a = a - b # 12-5=7
a = int(input('a: ')) b = int(input('b: ')) a = a + b b = a - b a = a - b print('a =', a) print('b =', b)

Третий вариант — использовать имеющееся в Python множественное присваивание. При этом обмен значений переменных выполняется одной строкой кода:

>>> a = 10 >>> b = 20 >>> a, b = b, a >>> a 20 >>> b 10

Почему такое возможно? В Питоне есть такая структура данных как кортеж.

При выполнении a, b = b, a интерпретатор Python сначала получает значения связанные с переменными b и a (правая часть) и помещает их в кортеж, в данном случае получится (10, 20) . После этого он связывает каждый элемент кортежа в определенной позиции с переменными в той же позиции, но расположенными слева.

Таким образом можно поменять значения не только двух переменных, также трех и более. Кроме того в Python можно обменивать значения переменных разных типов. Это связано с тем, что тип данных в Питоне привязан не к переменной, а к значению:

>>> a = 14 >>> b = 18 >>> c = 16 >>> a,b,c = c,a,b >>> a,b,c (16, 14, 18) >>> d = 4.56 >>> e = "hi" >>> d,e = e,d >>> d 'hi' >>> e 4.56

X Скрыть Наверх

Решение задач на Python

№4 Переменные в Python / Уроки по Python для начинающих

В отличие от других языков программирования, Python не имеет команды для объявления переменной. Переменная создается тогда, когда вы назначили ей значение.

x = 5 y = "Саша" print(x) print(y) 
5 Саша 

Не нужно указывать конкретный тип переменной при объявлении. Можно даже изменять их тип после создания.

x = 4 # сейчас x с типом int x = "Алёна" # теперь x с типом str print(x) 
Алёна 

Имя переменной

Переменная может иметь краткое имя (например, x и y ) или более содержательное имя ( age , carname , total_volume ).
Правила для переменных в Python:

  • Имя переменной должно начинаться с буквы или символа подчеркивания.
  • Оно не может начинаться с числа.
  • Имя переменной может содержать только буквенно-цифровые символы и символы подчеркивания (Az, 0-9 и _ )
  • Имена переменных чувствительны к регистру ( age , Age и AGE — три разных переменные)

Помните, что переменные чувствительны к регистру

Вывод переменных

Функция Python print часто используется для вывода переменных:
Чтобы комбинировать как текст, так и переменную, Python использует символ +

x = "невероятен" print("Python " + x) 
Python невероятен 

Вы также можете использовать символ + для добавления переменной в другую переменную:

x = "Python " y = "невероятен" z = x + y print(z) 
Python невероятен 

Для чисел символ + работает как математический оператор:

x = 5 y = 10 print(x + y) 

Если вы попытаетесь объединить строку и число, Python покажет вам сообщение об ошибке:

x = 5 y = "Саша" print(x + y) 
TypeError: unsupported operand type(s) for +: 'int' and 'str' 
  • ТЕГИ
  • Уроки Python для начинающих

Я создал этот блог в 2018 году, чтобы распространять полезные учебные материалы, документации и уроки на русском. На сайте опубликовано множество статей по основам python и библиотекам, уроков для начинающих и примеров написания программ.

Мои контакты: Почта
Python Q https://yandex.ru/q/loves/python Online

Python Q CEO Pythonru admin@pythonru.com https://secure.gravatar.com/avatar/b16f253879f7349f64830c64d1da4415?s=96&d=mm&r=g CEO Pythonru Python Александр Редактор https://t.me/cashncarryhttps://pythonru.com/https://yandex.ru/q/profile/cashnc/ PythonRu.com admin@pythonru.com Alex Zabrodin 2018-10-26 Online Python, Programming, HTML, CSS, JavaScript

Python: Изменение переменной

Само слово «переменная» подсказывает, что ее можно менять. И действительно, со временем внутри программы значения переменных могут изменяться.

# greeting - переводится как приветствие greeting = 'Father!' print(greeting) # => Father! greeting = 'Mother!' print(greeting) # => Mother! 

Имя осталось тем же, но внутри появились другие данные. Отметим, что переменные в Python не требуют специального объявления. Вместо этого переменная объявляется, когда ее впервые используют в программе.

Переменные — мощная и в то же время рисковая вещь. Нельзя сразу с уверенностью сказать, что внутри нее записано — сначала надо проанализировать код, который находится перед переменной. Именно этим занимаются разработчики во время отладки, когда пытаются разобраться, почему программа работает не так, как задумано.

Задание

В упражнении определена переменная, внутри которой содержится строка. Переопределите значение этой переменной и присвойте ей строку, в которой расположите символы первоначальной строки в обратном порядке.

Обратите внимание: в данном задании вам предстоит писать код между строчками с комментариями # BEGIN и # END (об этом говорилось ранее, но это первый раз, когда вы встречаетесь с таким форматом).

Упражнение не проходит проверку — что делать? ��

Если вы зашли в тупик, то самое время задать вопрос в «Обсуждениях». Как правильно задать вопрос:

  • Обязательно приложите вывод тестов, без него практически невозможно понять что не так, даже если вы покажете свой код. Программисты плохо исполняют код в голове, но по полученной ошибке почти всегда понятно, куда смотреть.

В моей среде код работает, а здесь нет ��

Тесты устроены таким образом, что они проверяют решение разными способами и на разных данных. Часто решение работает с одними входными данными, но не работает с другими. Чтобы разобраться с этим моментом, изучите вкладку «Тесты» и внимательно посмотрите на вывод ошибок, в котором есть подсказки.

Мой код отличается от решения учителя ��

Это нормально ��, в программировании одну задачу можно выполнить множеством способов. Если ваш код прошел проверку, то он соответствует условиям задачи.

В редких случаях бывает, что решение подогнано под тесты, но это видно сразу.

Прочитал урок — ничего не понятно ��

Создавать обучающие материалы, понятные для всех без исключения, довольно сложно. Мы очень стараемся, но всегда есть что улучшать. Если вы встретили материал, который вам непонятен, опишите проблему в «Обсуждениях». Идеально, если вы сформулируете непонятные моменты в виде вопросов. Обычно нам нужно несколько дней для внесения правок.

Кстати, вы тоже можете участвовать в улучшении курсов: внизу есть ссылка на исходный код уроков, который можно править прямо из браузера.

Определения

  • Переменная — способ сохранить информацию и дать ей имя для последующего использования в коде.

Можно ли в python изменить переменную переданную в аргементе функции

В функцию передается не переменная, а ее значение, это не указатели. Просто верните новое значение из функции a = func(a) , в функцию добавить return a . Другой вариант, передавать в параметр функции что-нибудь сложное, типа объекта класса или контейнер (список, словарь, . )

26 авг 2021 в 8:25

Переменная a, которой присваивается значение «victor», и переменная а, которая в функции, это две совершенно разные вещи. Общего у них только имя. Любое из них можно изменить на какое угодно другое и в выполнении программы совершенно ничего не изменится. Так же, как у Бориса из Новосибирска и Бориса из Симферополя общего только имя Борис. А все остальное разное.

26 авг 2021 в 8:41

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Почему значение a не меняется?

Т.к. a — строка, то в функцию передаётся копия значения a , а не указатель на неё, соответственно, когда мы меняем значение a в функции, мы меняем значение локальной копии, а не глобальной переменной.

def func(a): a = "anton" print("внутри функции", id(a)) a = "victor" print("вне функции", id(a)) func(a) print("вне функции", id(a)) print(a) 

Выведет что-то типо

вне функции 485256706736 внутри функции 485257302960 вне функции 485256706736 victor 

id показывает место в памяти, где лежит значение переменной и, как видите, вне функции оно одно, а внутри — другое.

Как можно обойти?

В вашем случае вы можете использовать ключевое слово global , чтобы получить и изменить значение глобальной переменной:

def func(): global a a = "anton" print("внутри функции", id(a)) a = "victor" print("вне функции", id(a)) func() print("вне функции", id(a)) print(a) 

Выведет что-то на подобии:

вне функции 542195432176 внутри функции 542200565424 вне функции 542200565424 anton 

Как лучше реализовать?

Метод с использованием global — наверняка не лучший способ достичь результата, который вы хотите, и я бы посчитал бы это code smell-ом, потому я предлагаю вам сделать так:

def func(a): a = "anton" print("внутри функции", id(a)) return a a = "victor" print("вне функции", id(a)) a = func(a) print("вне функции", id(a)) print(a) 

Выведет что-то такое:

вне функции 486729169712 внутри функции 486730096368 вне функции 486730096368 anton 

Этот подход намного лучше первого.

Что за локальные и глобальные переменные?
Локальные переменные — те, которые «заперты» в каком-то контексте, например:

def func(arg): pass 

Здесь arg — локальная переменная, она существует только в контексте функции func , и имеет влияние только на этот контекст.

Глобальные переменные — те, котоые мы объявляем в контексте программы:

foo = 5 

Переменная foo — глобалья, т.к. объявлена в контексте программы (модуля, или же без отступа)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *