Изучаем Python - [52]
Эквивалентные вызовы функций
Так как позиционные аргументы, именованные аргументы и значения по умолчанию могут использоваться одновременно, часто существуют несколько эквивалентных способов вызова функций. Возьмем оператор describe_pets() с одним значением по умолчанию:
def describe_pet(pet_name, animal_type='dog'):
При таком определении аргумент для параметра pet_name должен задаваться в любом случае, но это значение может передаваться как в позиционном, так и в именованном формате. Если описываемое животное не является собакой, то аргумент animal_type тоже должен быть включен в вызов, и этот аргумент тоже может быть задан как в позиционном, так и в именованном формате.
Все следующие вызовы являются допустимыми для данной функции:
describe_pet('willie')
describe_pet(pet_name='willie')
describe_pet('harry', 'hamster')
describe_pet(pet_name='harry', animal_type='hamster')
describe_pet(animal_type='hamster', pet_name='harry')
Все вызовы функции выдадут такой же результат, как и в предыдущих примерах.
примечание
На самом деле не так важно, какой стиль вызова вы используете. Если ваша функция выдает нужный результат, выберите тот стиль, который вам кажется более понятным.
Предотвращение ошибок в аргументах
Не удивляйтесь, если на первых порах вашей работы с функциями будут встречаться ошибки несоответствия аргументов. Такие ошибки происходят в том случае, если вы передали меньше или больше аргументов, чем необходимо функции для выполнения ее работы. Например, вот что произойдет при попытке вызвать describe_pet() без аргументов:
def describe_pet(animal_type, pet_name):
. ."""Выводит информацию о животном."""
. .print("\nI have a " + animal_type + ".")
. .print("My " + animal_type + "'s name is " + pet_name.title() + ".")
describe_pet()
Python понимает, что при вызове функции часть информации отсутствует, и мы видим это в данных трассировки:
Traceback (most recent call last):
(1) File "pets.py", line 6, in
(2) . .describe_pet()
(3)TypeError: describe_pet() missing 2 required positional arguments: 'animal_
type' and 'pet_name'
В точке (1) сообщается местонахождение проблемы, чтобы вы поняли, что с вызовом функции что-то пошло не так. В точке (2) приводится вызов функции, приведший к ошибке. В точке (3) Python сообщает, что при вызове пропущены два аргумента, и сообщает имена этих аргументов. Если бы функция размещалась в отдельном файле, вероятно, вы смогли бы исправить вызов, и вам не пришлось бы открывать этот файл и читать код функции.
Python помогает еще и тем, что он читает код функции и сообщает имена аргументов, которые необходимо передать при вызове. Это еще одна причина для того, чтобы присваивать переменным и функциям содержательные имена. В этом случае сообщения об ошибках Python принесут больше пользы как вам, так и любому другому разработчику, который будет использовать ваш код.
Если при вызове будут переданы лишние аргументы, вы получите похожую трассировку, которая поможет привести вызов функции в соответствие с ее определением.
Упражнения
8-3. Футболка: напишите функцию make_shirt(), которая получает размер футболки и текст, который должен быть напечатан на ней. Функция должна выводить сообщение с размером и текстом. Вызовите функцию с использованием позиционных аргументов. Вызовите функцию во второй раз с использованием именованных аргументов.
8-4. Большие футболки: измените функцию make_shirt(), чтобы футболки по умолчанию имели размер L, и на них выводился текст «I love Python.». Создайте футболку с размером L и текстом по умолчанию, а также футболку любого размера с другим текстом.
8-5. Города: напишите функцию describe_city(), которая получает названия города и страны. Функция должна выводить простое сообщение (например, «Reykjavik is in Iceland»). Задайте параметру страны значение по умолчанию. Вызовите свою функцию для трех разных городов, по крайней мере один из которых не находится в стране по умолчанию.
Возвращаемое значение
Функция не обязана выводить результаты своей работы. Вместо этого она может обработать данные, а затем вернуть значение или набор сообщений. Значение, возвращаемое функцией, называется возвращаемым значением. Команда return передает значение из функции в строку, в которой эта функция была вызвана. Возвращаемые значения помогают переместить бульшую часть рутинной работы в вашей программе в функции, чтобы упростить основной код программы.
Возвращение простого значения
Рассмотрим функцию, которая получает имя и фамилию и возвращает аккуратно отформатированное полное имя:
formatted_name.py
(1) def get_formatted_name(first_name, last_name):
. ."""Возвращает аккуратно отформатированное полное имя."""
(2) . .full_name = first_name + ' ' + last_name
(3) . .return full_name.title()
(4)musician = get_formatted_name('jimi', 'hendrix')
print(musician)
Определение get_formatted_name() получает в параметрах имя и фамилию (1) . Функция объединяет эти два имени, добавляет между ними пробел и сохраняет результат в full_name (2). Значение full_name преобразуется в формат с начальной буквой верхнего регистра, а затем возвращается в точку вызова (3).
Книга посвящена рассмотрению всей совокупности проблем, связанных с созданием, воспроизведением на компьютере и практическим использованием электронных и мультимедийных изданий. В частности, показано место этих изданий в современной медиа-индустрии. Рассмотрено использование различных HTML-редакторов и специализированных программных средств создания электронных и мультимедийных изданий (MS FrontPage, Macromedia Director, DreamWeaver и Flash, а также 3ds max). В книгу также вошли разделы, связанные с публикацией и хранением электронных изданий с помощью баз данных, а также семантическим анализом, индексацией и организацией поиска и долговременного хранения электронных документов.
Превратится ли всемирная паутина в «традиционное СМИ», содержание которого строго контролируется в интересах максимизации прибыли? В чьих руках сейчас находится Рубильник интернет-истории и, по сути, — развития общества? Исследуя развитие телефонии, радио, кино и телевидения, автор показывает, как эти индустрии прошли путь от хобби — к крупному бизнесу, от открытости и гибкости — к закрытой и жесткой системе. Какое будущее ожидает всемирную Сеть?Пролить свет на прошлое, чтобы предвидеть будущее — главная задача этой книги.Эта книга для тех, кто считает интернет не просто средством общения, но и инструментом познания мира, способом самовыражения.
Чем полезен Интернет пожилому человеку? Прежде всего, неограниченными возможностями общения. Вы можете вести виртуальный дневник или общаться с друзьями в социальных сетях, делиться советами на форумах или переписываться с родственниками, живущими за рубежом, находить старых друзей и заводить новых.Книга поможет вам ориентироваться в мире социальных сетей и интерактивных сервисов, научит вас работать с ними и использовать все те возможности, которые они предоставляют. Материал книги изложен в доступной форме, что облегчает его восприятие, а различные способы выполнения тех или иных действий дадут вам возможность выбрать наиболее удобный способ именно для вас.
Автор предлагает бесплатную, проверенную на практике, супернадежную и эффективную комплексную защиту от вирусов, шпионских программ, вторжения любопытных хакеров — любых попыток несанкционированного вторжения в ваш компьютер.Пользуясь советами автора, вы сможете не только выстроить надежную систему безопасности, но и контролировать те сайты, которые посещают ваши дети, а также без проблем восстановить операционную систему после любого сбоя и даже полного обрушения. Книга станет настольным пособием и у продвинутых пользователей, и у чайников благодаря простому и краткому изложению материала с подробными иллюстрациями каждого шага.
Рассказывается о ведущем поисковом ресурсе российской части Интернета — Яндексе. Описаны его сервисы для поиска документов и новостей, блогов и адресов, товаров и музыкальных произведений. Рассмотрены почтовый сервис и сервис для создания и размещения сайтов на Народ. ру. Читатель узнает о том, что такое "электронные деньги" и как с их помощью оплатить товар. Большое внимание уделяется общедоступным поисковым программам, которые Яндекс предлагает своим посетителям для поиска информации не только на сайтах, но и на своем компьютере.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
Не можете сосредоточиться на работе? Постоянно отвлекаетесь на проверку электронной почты, социальные сети и новостные ленты? Пора воспользоваться советами от ведущих IT-специалистов и погрузиться в работу с головой.Освойте один из самых ценных навыков – умение сосредоточиться на сложной задаче, не отвлекаясь на мелочи. Только так можно справиться со сложной информацией и добиться лучших результатов за минимальное время. Погружение в работу – это суперсила в нашей все более конкурентной экономике XXI века.
Что общего между самыми востребованными профессиями и стремительным увеличением количества информации в мире? Ответ: язык структурированных запросов (SQL). SQL — рабочая лошадка среди языков программирования, основа основ для современного анализа и управления данными. Книга «SQL: быстрое погружение» идеальна для всех, кто ищет новые перспективы карьерного роста; для разработчиков, которые хотят расширить свои навыки и знания в программировании; для любого человека, даже без опыта, кто хочет воспользоваться возможностями будущего, в котором будут править данные.
Даже плохой программный код может работать. Однако если код не является «чистым», это всегда будет мешать развитию проекта и компании-разработчика, отнимая значительные ресурсы на его поддержку и «укрощение». Эта книга посвящена хорошему программированию. Она полна реальных примеров кода. Мы будем рассматривать код с различных направлений: сверху вниз, снизу вверх и даже изнутри. Прочитав книгу, вы узнаете много нового о коде. Более того, вы научитесь отличать хороший код от плохого. Вы узнаете, как писать хороший код и как преобразовать плохой код в хороший. Книга состоит из трех частей.
Алгоритмы - это всего лишь пошаговые алгоритмы решения задач, и большинство таких задач уже были кем-то решены, протестированы и проверены. Можно, конечно, погрузится в глубокую философию гениального Кнута, изучить многостраничные фолианты с доказательствами и обоснованиями, но хотите ли вы тратить на это свое время? Откройте великолепно иллюстрированную книгу и вы сразу поймете, что алгоритмы - это просто. А грокать алгоритмы - это веселое и увлекательное занятие.