.replace()
не работает без переназначения, потому что, как отмечали другие, строки неизменяемы.Лучше всего думать о .replace()
как о функции, которая возвращает измененную строку, которая затем должна быть записана в переменную вместо метода, доступного для строковых объектов.Например:
message = "Hello there!"
message.replace("H", "F")
print(message)
Выход:
«Привет!»
Без замены.Чтобы избежать этого, вам нужно переназначить переменную, такую как:
message = "Hello there!"
message = message.replace("H", "F") # reassign variable
print(message)
Получив ожидаемое:
"Fello there!"
Далее,replacer
не имеет атрибута .message
, но это аргумент, который ожидает входную переменную , которую он назначит локальной переменной message
(которая скрывает вашу глобальную переменную message
, что, вероятно, приводит к некоторой путанице. Обычно локальные и глобальные пространства имен должны различаться!)
Наконец, ваша функция ничего не делает return
.Я предлагаю вам ознакомиться с return
операторами , чтобы узнать об этой функции.
Функциональный сценарий будет выглядеть следующим образом:
message = 'abc'
def replacer(input_message): # different namespace for local variable
input_message = input_message.replace("a", "!") #reassign output
input_message = input_message.replace("b", '1') #reassign output
input_message = input_message.replace('c', '@') #reassign output
input_message = input_message.replace('d', '2') #reassign output
return input_message # make the function give you something useful back
print(replacer(message)) # give the function an input instead of trying to access a method/attribute of it
Запуск этого обновленного сценария дает болеесоответствующий:
"! 1 @"