#python #procedure
#python #процедура
Вопрос:
Я попытался запустить приведенный ниже код. Почему код не печатает dogcatcatdog? Я определил a равным dog как строку, а b равным cat как строку в основной процедуре? Что я делаю не так ниже? Насколько я понимаю, он будет присваивать значения dog и cat A и B, а затем печатать возврат?
Текущий код выводит ABBA. Если я изменю метод печати, чтобы сказать print abbaize(‘dog’,’cat’) ЗАТЕМ он распечатает dogcatcatdog. Почему я не могу определить его в основном методе, как я сделал в своем коде ниже?
def abbaize(a ='dog', b ='cat'):
return a b b a
print abbaize('a','b')
Я ожидаю, что приведенный выше код напечатает dogcatcatdog?
Комментарии:
1. Вы не «определили a равным dog как строку, а b равным cat»,
abbaize(a ='dog', b ='cat')
вы просто говоритеabbaize
, что имеет два параметра,a
иb
, которые оба являются необязательными и имеют значения по умолчанию'dog'
и'cat'
соответственно. Однако, когда вы это делаете,abbaize('a', 'b')
вы передаете'a'
(строку) как значение для параметраa
и'b'
как значение для параметраb
. Чтобы использовать значения по умолчанию, просто не передавайте никаких параметров, вызывайтеabbaize()
(или вы могли бы передать их снова с помощьюabbaize('dog', 'cat')
).
Ответ №1:
Измените эту строку:
print abbaize('a','b')
Для:
print abbaize()
Если вы используете свою строку, она заменит строку «dog» на «a».
Поскольку вы уже объявили свои переменные в функции, вам не нужно передавать их в функцию.
Возможно, чтобы лучше понять, вы также могли бы сделать это:
def abbaize(a, b):
return a b b a
print abbaize('dog','cat')
Если вы используете Python 3.x, вам также необходимо изменить строку печати на:
print(abbaize())