Как устроен python мэтт харрисон
Перейти к содержимому

Как устроен python мэтт харрисон

  • автор:

Как устроен Python. Гид — Харрисон Мэтт

Обложка Как устроен Python - Харрисон Мэтт

Python — самый популярный язык программирования. Мэтт Харрисон занимается Python с 2000 года: Исследования, сборка и тестирование, бизнес-аналитика, хранение данных, а теперь делится своими знаниями как с простыми пользователями, так и с крупными корпорациями. Вы узнаете секреты внутренней кухни Python, доступные только профессионалам.

Как устроен Python. Гид для разработчиков, программистов и интересующихся

  • Книга Как устроен Python. Гид для разработчиков, программистов и интересующихся
  • фото страниц Как устроен Python. Гид для разработчиков, программистов и интересующихся #2
  • фото страниц Как устроен Python. Гид для разработчиков, программистов и интересующихся #3
  • фото страниц Как устроен Python. Гид для разработчиков, программистов и интересующихся #4
  • фото страниц Как устроен Python. Гид для разработчиков, программистов и интересующихся #5
  • фото страниц Как устроен Python. Гид для разработчиков, программистов и интересующихся #6
  • фото страниц Как устроен Python. Гид для разработчиков, программистов и интересующихся #7
  • фото страниц Как устроен Python. Гид для разработчиков, программистов и интересующихся #8
  • фото страниц Как устроен Python. Гид для разработчиков, программистов и интересующихся #9
  • Книга Как устроен Python. Гид для разработчиков, программистов и интересующихся
  • фото страниц Как устроен Python. Гид для разработчиков, программистов и интересующихся #2
  • фото страниц Как устроен Python. Гид для разработчиков, программистов и интересующихся #9
  • 559 грн.
  • отслеживать

Python в моде! Это самый популярный язык программирования. Вакансии для Python-разработчиков входят в список самых высокооплачиваемых, а благодаря бурному развитию обработки данных, знание Python становится одним из самых востребованных навыков в среде аналитиков.

Python — невероятный язык, популярный во многих областях. Он используется для автоматизации простых и сложных задач, цифровой обработки, веб-разработки, игр. Независимо от того, перешли ли вы на Python с другого языка, руководите группой программистов, работающих на Python, или хотите расширить свое понимание, имеет смысл подойти к изучению Python со всей серьезностью.

  • Язык издания

Библиотека программиста

Книга «Как устроен Python. Гид для разработчиков, программистов и интересующихся»

image

Привет Хаброжители! У нас недавно вышла новая книга про «Python». Предлагаем сразу ознакомится с ознакомительным материалом.

Отрывок. 7.4. Использование IDLE

Так как IDLE включает REPL, вы можете ввести приведенный код и проанализировать его прямо в REPL. Однако вы также можете написать код, запустить его и проанализировать из REPL. Чтобы опробовать эту возможность, откройте новый файл и включите в него следующий код:

name = "Matt" first = name age = 1000 print(id(age)) age = age + 1 print(id(age)) names = [] print(id(names)) names.append("Fred") print(id(names))

Сохраните код в файле с именем iden.py. Запустите файл. В IDLE для этого следует нажать клавишу F5. В REPL будут выведены четыре числа. Первые два будут разными; это говорит о том, что целое число является неизменяемым. Последние два числа совпадают. Это объясняется тем, что несмотря на изменение списка names идентификатор остался прежним. В общем-то в этом факте нет ничего принципиально нового.

Теперь самое интересное: если ввести в REPL команду dir(), она выведет список переменных. Вы увидите, что глобальные переменные из iden.py теперь стали доступны.

REPL в IDLE открывает доступ ко всем глобальным переменным. Вы можете просмотреть name и names и даже вызывать функции или методы — например, names.append(«George»).

Имея возможность изучить результаты только что выполненного кода, вы можете быстро проанализировать код и поэкспериментировать с ним. Опытные разработчики Python нередко пишут код в REPL, вставляют его в файл, снова запускают файл, пишут новый код в REPL и продолжают писать код таким способом.

image

image

image

Отрывок. 22. Субклассирование

Помимо группировки состояния и операций, классы также обеспечивают повторное использование кода. Если у вас уже имеется класс, а вам нужен другой класс, слегка отличающийся от него поведением, один из способов повторного использования заключается в субклассировании. Класс, от которого производится субклассирование, называется суперклассом (другое распространенное название суперкласса — родительский класс).

Предположим, вы хотите создать кресло, способное вмещать шесть лыжников. Чтобы создать класс Chair6, моделирующий кресло для шести человек, — более специализированную версию Chair, можно воспользоваться субклассированием. Субклассы позволяют программисту наследовать методы родительских классов и переопределять методы, которые нужно изменить.

Ниже приведен класс Chair6, который является субклассом CorrectChair:

>>> class Chair6(CorrectChair): . max_occupants = 6

Обратите внимание: родительский класс CorrectChair заключается в круглые скобки после имени класса. Заметим, что Chair6 не определяет конструктор в своем теле, однако вы можете создавать экземпляры класса:

>>> sixer = Chair6(76)

Как Python создает объект, если в классе не определен конструктор? Вот что происходит: когда Python ищет метод .__init__, поиск начинается с Chair6. Так как класс Chair6 содержит только атрибут max_occupants, Python не найдет здесь метод .__init__. Но поскольку Chair6 является субклассом CorrectChair, он обладает атрибутом __bases__ с перечислением базовых классов, сведенных в кортеж:

image

image

>>> Chair6.__bases__ (__main__.CorrectChair,)

Затем Python ищет конструктор в базовых классах. Он находит конструктор в CorrectChair и использует его для создания нового класса.

Такой же поиск происходит при вызове .load для экземпляра. У экземпляра нет атрибута, соответствующего имени метода, поэтому Python проверяет класс экземпляра. В Chair6 тоже нет метода .load, поэтому Python ищет атрибут в базовом классе CorrectChair. Здесь метод .load вызывается со слишком большим значением, что приводит к ошибке ValueError:

>>> sixer.load(7) Traceback (most recent call last): File "/tmp/chair.py", line 30, in sixer.load(7) File "/tmp/chair.py", line 13, in load new_val = self._check(self.count + number) File "/tmp/chair.py", line 23, in _check number)) ValueError: Invalid count:7

Python находит метод в базовом классе, но вызов метода ._check приводит к ошибке ValueError.

22.1. Подсчет остановок

Иногда лыжнику не удается нормально сесть на подъемник. В таких случаях оператор замедляет движение или останавливает подъемник, чтобы помочь лыжнику. Мы можем воспользоваться Python для создания нового класса, который будет подсчитывать количество таких остановок.

Предположим, при каждом вызове .load должна вызываться функция, которая возвращает логический признак того, произошла остановка или нет. В параметрах функции передается количество лыжников и объект кресла.

Ниже приведен класс, который получает функцию is_stalled в конструкторе. Эта функция будет вызываться при каждом вызове .load:

>>> class StallChair(CorrectChair): . def __init__(self, id, is_stalled): . super().__init__(id) . self.is_stalled = is_stalled . self.stalls = 0 . . def load(self, number): . if self.is_stalled(number, self): . self.stalls += 1 . super().load(number)

Чтобы создать экземпляр этого класса, необходимо предоставить функцию is_stalled. Следующая простая функция генерирует остановки в 10 % случаев:

>>> import random >>> def ten_percent(number, chair): . """Return True 10% of time""" . return random.random() < .1

Теперь можно создать экземпляр, указав функцию ten_percent в качестве параметра is_stalled:

>>> stall42 = StallChair(42, ten_percent)

22.2. super

Напомним, что StallChair определяет свой собственный метод .__init__, который вызывается при создании экземпляра. Обратите внимание: первая строка конструктора выглядит так:

super().__init__(id)

При вызове super внутри метода вы получаете доступ к правильному родительскому классу.

Строка в конструкторе позволяет вызвать конструктор CorrectChair. Вместо того чтобы повторять логику назначения атрибутов id и count, вы можете использовать логику из родительского класса. Так как StallChair имеет дополнительные атрибуты, которые нужно задать для экземпляра, это можно сделать после вызова родительского конструктора.

image

Метод .load тоже содержит вызов super:

def load(self, number): if self.is_stalled(number, self): self.stalls += 1 super().load(number)

В методе .load вы вызываете функцию is_stalled, чтобы определить, останавливался ли подъемник, после чего передаете управление исходной функциональности .load из CorrectChair при помощи super.

Размещение общего кода в одном месте (в базовом классе) сокращает количество ошибок и дублирований кода.

Об авторе

Мэтт Харрисон использует Python с 2000 года. Он руководит компанией MetaSnake, занимающейся консультационными услугами и проведением корпоративного обучения в области Python и теории анализа данных. В прошлом он работал в областях научных исследований, управления сборкой и тестированием, бизнес-аналитики и хранения данных.

Он выступал с презентациями и учебными лекциями на таких конференциях, как Strata, SciPy, SCALE, PyCON и OSCON, а также на локальных пользовательских конференциях. Структура и материал этой книги основаны на его практическом опыте преподавания Python. Мэтт периодически публикует в «Твиттере» полезную информацию, относящуюся к Python (@__mharrison__).

Научные редакторы

Роджер Э. Дэвидсон (Roger A. Davidson) в настоящее время является деканом факультета математики в колледже Америкэн Ривер (Сакраменто, штат Калифорния). Его докторская диссертация была написана на тему авиационно-космической техники, но он также является обладателем дипломов об образовании в области computer science, электротехники и системотехники, а также недавно получил сертификат в области data science (с чего и началось его увлечение Python). На протяжении своей карьеры Роджер работал в NASA, в компаниях из списка Fortune 50, в стартапах и муниципальных колледжах. Он с энтузиазмом относится к образованию, науке (не только к обработке данных), пирогам с ежевикой и руководству неоднородными коллективами при решении больших задач.

Эндрю Маклафлин (AndrewMcLaughlin) — программист и проектировщик, системный администратор в первую половину дня и семьянин во вторую. Из-за своего внимания к деталям занимается веб-программированием с 1998 года. Обладатель диплома с отличием университета Джорджа Фокса, Эндрю получил степень в области систем управления и информации. В свободное время он ходит в турпоходы со своей женой и двумя детьми, а также иногда работает в столярной мастерской (все пальцы пока на месте). Читайте его публикации в «Твиттере»: @amclaughlin.

Для Хаброжителей скидка 20% по купону — Python.

  • Блог компании Издательский дом «Питер»
  • Python
  • Профессиональная литература

Как устроен Python. Гид для разработчиков, программистов и интересующихся (pdf+epub)

Также данная книга доступна ещё в библиотеке. Запишись сразу в несколько библиотек и получай книги намного быстрее.

Те, кто искали эту книгу – читают

Уведомить о начале продаж:
Как читать книгу после покупки

  • Объем: 272 стр.
  • Жанр:з арубежная компьютерная литература, п рограммирование, р уководства
  • Теги:р азработка приложений, р азработка программного обеспечения, я зык PythonРедактировать

Эта и ещё 2 книги за 399 ₽

По абонементу вы каждый месяц можете взять из каталога одну книгу до 700 ₽ и две книги из специальной подборки. Узнать больше

Оплачивая абонемент, я принимаю условия оплаты и её автоматического продления, указанные в оферте
Оплатить Отмена

Отзывы 10

Сначала популярные

  • Сначала популярные
  • Сначала новые

+ Оставить отзыв
02 января 2020

Пожалуй лучший вариант в качестве первой книги по python. Пробовал читать другие… но только с этой начало приходить понимание как устроен язык, что именно происходит в коде, почему нужно написать так, а не иначе. Дело пошло, а то топтался на месте

27 апреля 2019

Обычно внутреннее устройство Python рассматривается в каких-то серьезных изданиях или на веб-сайтах в Интернете, где разбираются какие-то конкретные примеры кода, где важно, как Python этот код обрабатывает.

В книге же информация о внутренних механизмах Python гармонично переплетается с теоретическими знаниями и понятными примерами кода. Материал читается легко, не перегружен лишней информацией, иллюстрирован понятными графическими схемами.

Владимир Ченныто
27 марта 2020

В книге все понятно с самых превых страниц, теория подана с хорошими иллюстрациями и примерами. Есть практические задания для закрепления теории.

Андрей Микульский
30 апреля 2019

В этой книге язык Питон рассматривается с самых начальных шагов в изучении языка. Стиль и подача материала отличается от стиля многих книг по языку. Цепляет с первых страниц.

08 июля 2020

Отличный учебник. Грамотно написанный и грамотно структурированный. Всё доходчиво изложено – что, зачем, почему именно так, и с примерами.

aleksejcopa5
14 ноября 2022

нет проверочных решений заданий. и много заданий которые невозможно решить на определённом этапе книги, т. к читатель ещё не в курсе каких либо функций , но для задания они нужны.

12 января 2022

Достойная книга. Хорошо поданы и проиллюстрированы структуры и методы, используемые в python. Однозначно рекомендую. Автор не копает очень глубоко, что позволяет уловить концепции. Для остального есть документация и исходный код =)

Марк Михалко
27 июля 2021

Збс. Кратко, ёмко, без лишней воды, местами с юморком. Не знаю подойдёт ли для новичка в программировании, но для новичка в Python зашло на ура!

Дмитрий Суздалев
18 мая 2020

Я новичок в python, как то пересекался с web'ом html, JavaScript, css. Дальше не заглядывал ещё, но вот первая книга про код и действительно интересная, хорошо по шагам расписано что к чему, порой кажется ну совсем для чайников. Для новичков отличный пинок в python.

nanocompiler000 nanocompiler000
26 мая 2021

Книга хорошая, язык плохой – для троечников. Если кто не в состоянии освоить универсальный язык промышленного программирования С/С++, то ему путь в мир Python.

Правда при этом становится непонятно, почему у Python-программистов зарплата должна быть больше, чем у программистов С/С++? Ну раз требования к профессиональному уровню программиста при переходе от C/C++ к Python объективно резко снижаются, вследствие упрощения самого языка (убрали не только арифметику указателей, как в Java, но и типизацию данных, и, соответственно ещё и структуры данных – упростили до неприличия), то и оплата труда таких лихих полупрограммистов должна снижаться? Не так ли? В чём интерес корпораций: вводить новый упрощённый язык разработки, чтобы резко повысить зарплаты разработчиков? Ну и ну. А если подумать? А если подумать, то новый упрощённый язык программирования нужен корпорациям, чтобы резко снизить требования к профессиональному уровню разработчиков, и на этом основании, резко снизить им зарплаты. Оптимизировать основные издержки при разработке ПО (на зарплату программистов, для тех кто не понял) за счёт изгнания дорогих программистов С/С++ и замены их на дешёвых полупрограммистов Python.

Насторожиться надо с первой фразы: «Python в моде! Это самый популярный язык программирования».

Хорошее дело от моды не зависит и в моде, как в маркетинговом рычаге повышении объёма продаж, не нуждается. То, что сегодня в моде, завтра из моды выйдет. Иначе это не мода.

Но книжку освоить надо – чтобы знать эту новомодную заразу и заранее отработать методы ликвидации ущерба, который наносится программисткой отрасли этим модным изобретением.

Ну а про большие зарплаты – эту лапшу вешайте на уши совсем глупым студентам. Правда, по прежнему непонятно, за что вы им будете платить большие деньги, раз это такой простой как мычание (действительно простой и смешной как мычание) язык. За что что тогда большая зарплата на высокооплачиваемой вакансии?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *