Почему глобальная переменная не изменилась?
Использую python-библиотеку aiogram для написания ботов. В первом хэндлере введенное сообщение пользователем сохраняю в переменную answer, далее во втором хэндлере приравниваю каждый символ к нижнему регистру. Далее хочу использовать эту переменную, но обнаруживаю что она так и не поменялась. В чем причина?
@dp.message_handler(state=Link.A1)
async def enter_link(message: types.Message, state: FSMContext):
global answer
answer = message.text
chat_id = message.chat.id
await bot.send_message(chat_id=chat_id,
text=('Введенная ссылка: ' + answer + '. Напишите "yes", если ссылка верна!'))
await state.finish()
answer = ''
@dp.message_handler(text='yes')
async def good(message: types.Message):
global answer
answer.lower()
chat_id = message.chat.id
await bot.send_message(chat_id=chat_id, text='Ссылка сменена!')
print(answer)
Ответы (1 шт):
Автор решения: CrazyElf
→ Ссылка
Потому что результат работы lower надо присвоить обратно в переменную:
answer = answer.lower()
В Python есть много функций, которые работают in place (на месте) и не требуют присвоения, но строковые функции по определению такими не бывают, потому что строки иммутабельны (неизменны).