Определение метода — вывод Dogcatcatdog

#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())