Python. Чистый код для продолжающих
Қосымшада ыңғайлырақҚосымшаны жүктеуге арналған QRRuStore · Samsung Galaxy Store
Huawei AppGallery · Xiaomi GetApps

автордың кітабынан сөз тіркестері  Python. Чистый код для продолжающих

Damir K.
Damir K.дәйексөз келтірді15 сағат бұрын
Последовательность (sequence) представляет собой объект любого контейнерного типа данных с упорядоченными значениями, к которым можно обращаться по целым индексам. Строки, кортежи, списки и байтовые объекты относятся к типам данных последовательностей. Объекты этих типов могут обращаться к значениям по целым индексам в операторе индексирования (квадратные скобки [ и ]), а также могут передаваться функции len(). Под упорядоченностью мы понимаем, что в последовательности есть первое значение, второе значение и т.д.
Комментарий жазу
Damir K.
Damir K.дәйексөз келтірді15 сағат бұрын
В Python контейнером называется объект любого типа данных, который может содержать несколько других объектов. Из всех видов контейнеров в Python чаще всего используются списки и словари.
Комментарий жазу
Damir K.
Damir K.дәйексөз келтірді2 күн бұрын
Чтобы просмотреть список переменных среды для окна терминала, выполните команду set (в Windows) или env (в macOS или Linux) в командной строке: C:\Users\Al>set ALLUSERSPROFILE=C:\ProgramData APPDATA=C:\Users\Al\AppData\Roaming CommonProgramFiles=C:\Program Files\Common Files --snip-- USERPROFILE=C:\Users\Al VBOX_MSI_INSTALL_PATH=C:\Program Files\Oracle\VirtualBox\ windir=C:\WINDOWS Слева от знака равенства (=) указывается имя переменной среды, а справа — строковое значение. Каждый процесс содержит отдельный набор переменных среды, так что разные командные строки могут содержать разные значения своих переменных среды. Для просмотра значения одной переменной среды также можно воспользоваться командой echo. Команда echo%HOMEPATH% в Windows или echo$HOME в macOS или Linux выводит значение переменных среды HOMEPATH или HOME соответственно, которые содержат домашнюю папку текущего пользователя. В Windows результат выглядит так: C:\Users\Al>echo %HOMEPATH% \Users\Al Результат в macOS или Linux: al@al-VirtualBox:~$ echo $HOME /home/al Если этот процесс создает другой процесс (например, как командная строка запускает интерпретатор Python), дочерний процесс получает собственную копию переменных среды родительского процесса. После этого дочерний процесс может изменить значения своих переменных среды, и наоборот. Набор переменных среды операционной системы можно рассматривать как эталонную копию, с которой процесс копирует свои переменные среды. Переменные среды операционной системы изменяются реже переменных программы Python. Более того, многие пользователи вообще не изменяют значения переменных среды.
Комментарий жазу
Андрей
Андрейдәйексөз келтірді6 күн бұрын
ООП — полезный механизм организации вашего кода. Классы позволяют группировать данные и код в новые типы данных. Также на базе классов можно создавать объекты, вызывая их конструкторы (имя класса, вызываемое как функция), которые в свою очередь вызывают метод __init__() класса. Методы представляют собой функции, связанные с объектами, а атрибуты — переменные, связанные с объектами. Все методы получают первый параметр self, которому присваивается текущий объект при вызове метода. Это позволяет методам присваивать значения атрибутам объекта и вызывать его методы. Хотя Python не позволяет задать приватный или открытый уровень доступа для атрибутов, в языке принято использовать префикс _ для любых методов и атрибутов, которые должны вызываться или к которым следует обращаться из собственных методов класса. Соблюдение этого соглашения поможет предотвратить некорректное использование класса и перевод его в недействительное состояние, которое может привести к ошибкам. Вызов type(obj) возвращает объект класса для типа obj. Объекты класса включают атрибут __qualname___, который содержит строку с удобочитаемой формой имени класса. Возможно, к этому моменту у вас возник вопрос: зачем вообще нужны хлопоты с классами, атрибутами или методами, когда все то же доступно с помощью функций? ООП — полезный механизм организации кода в нечто большее, чем обычный файл .py с сотней функций. Разбивая программу на несколько хорошо спроектированных классов, вы можете сосредоточиться на каждом классе по отдельности. Методология ООП ориентирована на структуры данных и методы работы с этими структурами данных. Эта методология не является обязательной для всех программ, и, безусловно, злоупотребления ООП тоже возможны. Однако ООП позволяет использовать некоторые нетривиальные механизмы, о которых мы поговорим в следующих двух главах. Глава 16 посвящена первому из этих механизмов — ­наследованию.
Комментарий жазу
Андрей
Андрейдәйексөз келтірді1 апта бұрын
Объектно-ориентированное программирование, или ООП, — механизм языка программирования, позволяющий группировать переменные и функции в новые типы данных, называемые классами. На базе классов создаются объекты. Распределяя свой код по классам, можно разбить монолитную программу на меньшие части, которые проще понять и отладить. В небольших программах ООП добавляет не столько структуру, сколько рутину. Хотя некоторые языки (например, Java) требуют организации всего кода в классах, ООП-функциональность в Python не является обязательной. Программист может воспользоваться классами, если они ему нужны, или забыть про классы, если без них можно обойтись. В докладе разработчика Python Джека Дидериха (Jack Diederich) «Перестаньте писать классы» на конференции PyCon 2012 (https://youtu.be/o9pEzgHorH0/) рассматриваются некоторые ситуации, в которых программисты пишут классы, хотя можно было бы обойтись более простой функцией или модулем. Как бы то ни было, вам как программисту следует знать основы классов и их использования. Из этой главы вы узнаете, что такое классы, почему они используются в программах и какой синтаксис и концепции программирования лежат в их основе. ООП — обширная тема, и эта глава содержит только краткое введение в нее.
Комментарий жазу
Андрей
Андрейдәйексөз келтірді1 апта бұрын
Головоломка «Ханойская башня» и игра «Четыре в ряд» — короткие программы, но так как мы следовали принципам, представленным в книге, их код хорошо читается и прост в отладке. В этих программах применяется ряд полезных практик: они были автоматически отформатированы программой Black, для описания модулей и функций использовались doc-строки, а константы мы разместили в начале файла. Переменные, параметры функций и возвращаемые значения функций ограничиваются одним типом данных, так что аннотации типов (как полезная форма дополнительной документации) оказываются излишними. В «Ханойской башне» три башни представлены словарем с ключами 'A', 'B' и 'C', значениями которых являются списки целых чисел. Такой подход работает, но если бы программа была сколько-нибудь большой и сложной, для представления этих данных стоило бы воспользоваться классом. Классы и средства ООП в этой главе не использовались, потому что об ООП речь пойдет только в главах 15–17. Просто помните, что для таких структур данных абсолютно нормально использовать класс. Башни выводятся на экран в ASCII-графике, а диски изображаются серией текстовых символов. Игра «Четыре в ряд» также использует ASCII-графику для вывода представления игрового поля. Изображение поля строится из многострочного текста, хранимого в константе BOARD_TEMPLATE. Строка включает 42 пары фигурных скобок {} для каждой ячейки игрового поля 7 × 6. Строковый метод format() заменяет каждую пару фигурных скобок ячейкой, находящейся в соответствующей позиции. При таком подходе более очевидно, как строка BOARD_TEMPLATE строит игровое поле, выводимое на экран. Несмотря на различия в структурах данных, у этих двух программ много общего. Обе программы выводят свои структуры данных на экран, запрашивают у игрока входные данные, проверяют ввод, а затем используют его для обновления своих структур данных, прежде чем возвращаться к началу цикла. Однако код для выполнения всех этих действий можно написать многими способами. Как сделать свой код удобочитаемым? Удобочитаемость — субъективное ощущение, а не объективная метрика, определяемая степенью соответствия некоторому набору правил. Исходный код, приведенный в этой главе, показывает, что, хотя к любому коду с запахом всегда стоит присмотреться еще раз, признаки проблемы далеко не всегда указывают на существование проблемы, которую необходимо исправить. Удобочитаемость кода важнее бездумного следования политике недопустимости запахов кода в ваших программах.
Комментарий жазу
Андрей
Андрейдәйексөз келтірді1 апта бұрын
В стандартную библиотеку Python включены два модуля для профилирования: timeit и cProfile. Функция timeit.timeit() полезна для выполнения небольших фрагментов кода с целью сравнения времени их выполнения. Функция cProfile.run() компилирует подробный отчет по большим функциям и может выявить любые узкие места. Важно измерять быстродействие вашего кода, а не делать предположения относительно него. Хитроумные трюки для ускорения работы программы на самом деле могут замедлить ее. Или есть вероятность, что вы потратите много времени на оптимизацию фрагмента, который будет незначительно влиять на скорость вашей программы. Закон Амдала отражает этот факт в математическом виде: формула описывает, как ускорение работы одного компонента влияет на ускорение программы в целом. Пожалуй, из всех концепций теории вычислений именно нотация «О-большое» находит наибольшее практическое применение. Для ее понимания необходимы определенные знания математики, но концепция определения закономерности замедления кода с ростом объема данных позволяет описывать алгоритмы без длинных формул. Известны семь основных порядков сложности нотации «О-большое». Низкие порядки: O(1), или постоянное время, описывает код, время выполнения которого не изменяется с увеличением размера данных n; O(log n), или логарифмическое время, описывает код, сложность которого увеличивается на один шаг при увеличении размера данных n вдвое; O(n), или линейное время, описывает код, который замедляется пропорционально росту размера данных n; O(n log n), или время n-log-n, описывает код, который работает немного медленнее O(n) — многие алгоритмы сортировки относятся к этому порядку. Более высокие порядки работают медленнее, потому что их время выполнения растет намного быстрее размера входных данных: O(n2), или полиномиальное время, описывает код, время выполнения которого растет в квадратичной зависимости от размера входных данных n; порядки O(2n), или экспоненциальное время, и O(n!), или факториальное время, встречаются не так часто — в основном там, где в вычислениях используются комбинации и перестановки соответственно. Помните: хотя нотация «О-большое» является полезным аналитическим инструментом, она не заменит выполнения кода в профилировщике для выявления узких мест. Однако если вы будете понимать нотацию «О-большое» и закономерности замедления кода с ростом данных, это позволит избежать написания кода, который работает значительно медленнее, чем мог бы.
Комментарий жазу
zamaziz
zamazizдәйексөз келтірді2 апта бұрын
статью «Learn Python in Y Minutes» (https://learnxinyminutes.com/docs/python/) или страницу Эрика Мэтиза (Eric Matthes) «Python Crash Course — Cheat Sheet» (https://ehmatthes.github.io/pcc/cheatsheets/README.html).
Комментарий жазу
Андрей
Андрейдәйексөз келтірді2 апта бұрын
Системы контроля версий спасают программистов от многих бед. Сохранение кода упрощает анализ хода работы над проектом и в некоторых случаях позволяет отменять нежелательные изменения. Изучение основ работы с системой контроля версий — такой как Git — безусловно, сэкономит ваше время в долгосрочной перспективе. Проекты Python обычно состоят из нескольких стандартных файлов и папок, и модуль cookiecutter помогает создать заготовки кода для многих таких файлов. Они станут первыми из сохраненных в вашем локальном репозитории Git. Папка, содержащая весь этот контент, называется рабочим каталогом или папкой проекта. Git отслеживает файлы в рабочем каталоге. Каждый файл может существовать в одном из трех состояний: сохраненном (или чистом), измененном или индексированном. Командная строка Git поддерживает ряд команд (например, gitstatus или gitlog) для просмотра этой информации, но вы также можете воспользоваться сторонними средствами с графическим интерфейсом. Команда gitinit создает новый пустой репозиторий на вашем локальном компьютере. Команда gitclone копирует репозиторий с удаленного сервера (например, с популярного веб-сайта GitHub). После создания репозитория вы можете воспользоваться командами gitadd и gitcommit для сохранения изменений в репозитории и командой gitpush для отправки коммитов в удаленный репозиторий GitHub. В этой главе я рассказал и о командах для отмены внесенных изменений. Отмена позволяет вернуться к более ранней версии ваших файлов. Git — сложный инструмент со множеством возможностей, и эта глава знакомит вас только с основами системы контроля версий. Существует множество ресурсов для изучения расширенной функциональности Git. Я рекомендую две бесплатные книги, которые можно найти в интернете: «Pro Git» Скотта Чаркона (Scott Charcon) (https://git-scm.com/book/en/v2)13 и «Version Control by Example» Эрика Синка (Eric Sink) (https://ericsink.com/vcbe/index.html).
Комментарий жазу
Андрей
Андрейдәйексөз келтірді4 апта бұрын
Функции предоставляют популярный механизм группировки кода наших программ; при их написании необходимо принимать ряд решений: какое имя им присвоить, какой размер они должны иметь, сколько у них должно быть параметров и сколько аргументов должно передаваться для этих параметров. Синтаксисы * и ** в командах def позволяют функциям получать переменное количество параметров; такие функции называются вариадическими. Хотя Python не является языком функционального программирования, в нем реализованы многие возможности, используемые в языках функционального программирования. Функции являются первоклассными объектами; это означает, что их можно сохранять в переменных и передавать как аргументы других функций (которые в этом случае называются функциями высшего порядка). Лямбда-функции предоставляют короткий синтаксис для определения анонимных функций как аргументов функций высшего порядка. Самые распространенные функции высшего порядка в Python — map() и filter(), хотя предоставляемая ими функциональность быстрее реализуется списковыми включениями. Возвращаемые значения функций всегда должны иметь постоянный тип данных. Возвращаемые значения не должны использоваться как коды ошибок; для этой цели следует использовать исключения. В частности, значение None часто определяется как код ошибки.
Комментарий жазу