Задать вопрос
@BorisRad

Почему код из книги Эрика Метиза «Изучаем Python» не работает?

Изучаю Пайтон по книге Эрика Метиза "Изучаем Python" и в главе 8 "функции " тема "Возвращение словаря" написано, что функцию можно расширить любым количеством информации, а ниже код:

def build_person(first_name, last_name):
    """Возвращает словарь с информацией о человеке."""
    person = {'first': first_name, 'last': last_name}
    if age:
        person['age'] = age
    return person
musician = build_person('jimi', 'hendrix', age=27)
print(musician)

python выдает ошибку:

Traceback (most recent call last):
  File "C:\Users\Я\AppData\Local\Programs\Python\Python311\1.py", line 7, in <module>
    musician = build_person('jimi', 'hendrix', age=27)
TypeError: build_person() got an unexpected keyword argument 'age'

Как решить?
  • Вопрос задан
  • 261 просмотр
Подписаться 1 Простой 1 комментарий
Решения вопроса 1
SoreMix
@SoreMix Куратор тега Python
yellow
В английской версии всё ок между прочим.
eng
645355141213d133294531.jpeg


При этом чуть ниже написано что определение функции модифицировали, добавив age, просто в самом фрагменте кода этого нет почему-то:
В определение функции добавляется новый необязательный параметр age, которому присваивается специальное значение по умолчанию None


Естественно, правильный код будет
def build_person(first_name, last_name, age=None):
    """Возвращает словарь с информацией о человеке."""
    person = {'first': first_name, 'last': last_name}
    if age:
        person['age'] = age
    return person
musician = build_person('jimi', 'hendrix', age=27)
print(musician)
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Vindicar
@Vindicar
RTFM!
def build_person(first_name, last_name, age=None):
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы