Что означает 42m в python
Встроенные функции Python: какие нужно знать и на какие не стоит тратить время
Авторизуйтесь
Встроенные функции Python: какие нужно знать и на какие не стоит тратить время
В Python существуют десятки встроенных функций и классов, сотни инструментов, входящих в стандартную библиотеку Python, и тысячи сторонних библиотек на PyPI. Держать всё в голове начинающему программисту нереально. В статье расскажем про стандартные встроенные функции Python: какие используются часто, а какие вам, вероятно, не пригодятся никогда.
Чтобы разобраться, на какие функции стоит обратить внимание, их следует разделить на группы:
Встроенные функции в первых двух категориях являются основными. Они в конечном итоге будут нужны почти всем начинающим программистам на Python. Встроенные модули в следующих двух категориях являются специализированными, но потребности в них будут варьироваться в зависимости от вашей специализации. Категория 5 — это скрытые встроенные функции. Они очень полезны, когда в них есть необходимость, но многим программистам Python они, вероятно, никогда не понадобятся.
Общеизвестные функции
Если вы уже писали код на Python, эти модули должны быть вам знакомы.
Нравится вам такая реализация или нет, другой альтернативы не предусмотрено, поэтому к ней нужно привыкнуть.
К сожалению, в отличие от многих других языков программирования, в Python нельзя объединять строки и числа.
Python отказывается приводить целое число 3 к типу строка, поэтому нужно сделать это самостоятельно, используя встроенную функцию str (технически это класс, но с целью уменьшить количество ненужной информации будем принимать все методы за функции).
Эту функцию также можно использовать для отсечения дробной части у числа с плавающей точкой.
Обратите внимание, если нужно обрезать дробную часть при делении, оператор « // » более уместен (с отрицательными числами это работает иначе).
float
Float также можно использовать для преобразования целых чисел в числа с плавающей запятой.
Эта функция может очень облегчить задачу, если вы хотите составить список из итераций цикла.
При работе со списком метод copy позволяет создать его копию.
Если вы не знаете, с какими элементами работаете, функция list является более общим способом перебора элементов и их копирования.
Также можно использовать списковое включение, но делать это не рекомендуется.
Обратите внимание, когда вы хотите создать пустой список, следует использовать буквальный синтаксис списка (« [ ] »).
Использование « [ ] » считается более идиоматическим, так как эти скобки на самом деле выглядят как список Python.
tuple
Если вы пытаетесь создать хешируемую коллекцию (например, ключ словаря), стоит отдать предпочтению кортежу вместо списка.
Эта функция создаёт новый словарь.
Подобно спискам и кортежам, dict эквивалентна проходу по массиву пар «ключ-значение» и созданию из них словаря.
Дан список кортежей, по два элемента в каждом.
Выведем его на экран с помощью цикла.
Функция dict может принимать 2 типа аргументов:
Поэтому следующий код также будет работать.
Функция dict также может принимать ключевые слова в качестве аргументов для создания словаря со строковыми ключами.
Но рекомендуется всё же использовать литералы вместо ключевых слов.
Такой синтаксис более гибок и немного быстрее. Но самое главное он более чётко передаёт факт того, что вы создаёте именно словарь.
Как в случае со списком и кортежем, пустой словарь следует создавать с использованием буквального синтаксиса (« < >»).
Использование « < >» более идиоматично и эффективно с точки зрения использования процессора. Обычно для создания словарей используются фигурные скобки, dict встречается гораздо реже.
Создать пустой набор с « < >» нельзя (фигурные скобки создают пустой словарь). Поэтому функция set — лучший способ создать пустой набор.
Можно использовать и другой синтаксис.
Такой способ имеет недостаток — он сбивает с толку (он основан на редко используемой функции оператора * ), поэтому он не рекомендуется.
range
Результирующий диапазон чисел включает начальный номер, но исключает конечный ( range(0, 10) не включает 10).
Данная функция полезна при переборе чисел.
Обычный вариант использования — выполнить операцию n раз.
Функция range в Python 2 возвращает список. Это означает, что примеры кода выше будут создавать очень большие списки. Range в Python 3 работает как xrange в Python 2. Числа вычисляются «более лениво» при проходе по диапазону.
Функции, неочевидные для новичков
Эта функция проверяет достоверность (истинность) объектов Python. Относительно чисел будет выполняться проверка на неравенство нулю.
Применяя bool к коллекциям, будет проверяться их длина (больше 0 или нет).
Проверка истинности очень важна в Python. Вместо того, чтобы задавать вопросы о длине контейнера, многие новички задают проверку истинности.
Данная функция используется редко. Но, если нужно привести значение к логическому типу для проверки его истинности, bool вам необходима.
enumerate
Если нужно в цикле посчитать количество элементов (по одному элементу за раз), эта функция может быть очень полезной. Такая задача может показаться специфической, но она бывает нужна довольно часто.
Например, если нужно отслеживать номер строки в файле.
Enumerate также часто используется для отслеживания индекса элементов в последовательности.
reversed
Единственное, что можно сделать с этим итератором, пройтись по нему (но только один раз).
Есть несколько и других способов перевернуть списки в Python.
Данная функция, как правило, является лучшим способом «перевернуть» любой список (а также набор, массив и т. д.) в Python.
Эта функция берёт набор чисел и возвращает их сумму.
В Python есть много вспомогательных функций, которые выполняют циклы за вас (отчасти потому, что они хорошо сочетаются с генератор-выражениями).
min и max
Эти функции выдают минимальное и максимальное число из набора соответственно.
sorted
Эта функция принимает любой набор элементов и возвращает новый список всех значений в отсортированном порядке.
any и all
Эти функции могут быть использованы в паре с генератор-выражениями, чтобы определить соответствие элементов заданному условию.
Отрицание условия и возвращаемого значения позволит также использовать any в этом примере точно также (что усложнит конструкцию, но вполне сойдёт в качестве примера использования).
5 функций для отладки
Эти функции часто игнорируются, но будут полезны для отладки и устранения неисправностей кода.
breakpoint
Если нужно приостановить выполнение кода и перейти в командную строку Python, эта функция вам пригодится. Вызов breakpoint перебросит вас в отладчик Python.
Эта функция может использоваться в двух случаях:
Эта функция возвращает тип объекта, который вы ей передаете.
Тип экземпляра класса есть сам класс.
В действительности вы, скорее всего, будете обращаться за помощью к поисковой системе. Но если вы уже находитесь в Python Shell, вызов help(list.insert) будет быстрее, чем поиск документации в Google.
Функции, которые пригодятся позже
В начале изучения Python эти функции вам по большей части будут не нужны, но в конечном итоге они вам понадобятся.
Эта функция служит для открытия файла и последующей работы с ним. Но, если вы не работаете с файлами напрямую, то она вам может и не пригодиться.
input
Эта функция запрашивает у пользователя ввод, ждёт нажатия клавиши Enter, а затем возвращает набранный текст.
Чтение из стандартного ввода — это один из способов получить входные данные в программе. Но есть и много других способов: аргументы командной строки, чтение из файла, чтение из базы данных и многое другое.
Эта функция необходима для представления объекта в читабельном виде.
Для многих объектов функции str и repr работают одинаково.
Но есть объекты, для которых их применение различается.
Также repr используется при ведении лог-журнала, обработке исключений и реализации более сложных методов.
super
Эта функция очень важна, если используется наследование одного класса от другого.
Многие пользователи Python редко создают классы. Они не являются важной частью Python, хоть для многих типов программирования они необходимы. Например, вы не можете использовать веб-фреймворк Django без создания классов.
property
Декоратор позволяет создать атрибут, который всегда будет содержать возвращаемое значение конкретного вызова функции. Это проще всего понять на примере.
issubclass и isinstance
Функция issubclass проверяет, является ли класс подклассом одного или нескольких других классов.
Функция isinstance проверяет, является ли объект экземпляром одного или нескольких классов.
hasattr, getattr, setattr и delattr
Если нужно работать с атрибутами объекта, но имя атрибутов является динамическим и постоянно меняется, данные функции вам будут необходимы.
Функция hasattr позволяет проверить, имеет ли объект определённый атрибут.
Функция getattr позволяет получить значение атрибута (с необязательным значением по умолчанию, если атрибут не существует).
Функция setattr позволяет установить значение атрибута.
И delattr соответственно удаляет атрибут.
classmethod и staticmethod
Данная функция возвращает следующий элемент в итераторе.
Она может работать со следующими видами итераторов:
Функция next может быть представлена как способ вручную перебрать набор, чтобы получить один единственный элемент, а затем выйти из перебора.
Функции, которые когда-нибудь можно выучить
Следующие встроенные функции Python определённо не бесполезны, но они более специализированы.
Эти функции вам, возможно, будут нужны, но также есть шанс, что вы никогда не прибегнете к ним в своём коде.
Прочие специфические функции
Заключение
Если вы только начинаете свой путь в изучении Python, нет необходимости изучать все встроенные функции сейчас. Не торопитесь, сосредоточьтесь на первых двух пунктах (общеизвестные и упускаемые из виду), а после можете перейти и к другим, если/когда они вам понадобятся.
Как % работает в Python?
Что значит % в расчет? Я не могу понять, что он делает.
18 ответов
Пример 1: 6%2 оценивает в 0 потому что нет остатка, если 6 делится на 2 (3 раза ).
Пример 2: 7%2 значение 1 потому что есть остаток 1 когда 7 делится на 2 ( 3 раза ).
Итак, чтобы подвести итог, это возвращает остаток операции деления, или 0 если нет остатка. Так что 6%2 означает найти остаток 6, разделенный на 2.
несколько не по теме % также используется в операциях форматирования строк, таких как %= для замены значений в строку:
опять же, вне темы, но это, кажется, немного документированная функция, которая заняла у меня некоторое время, чтобы отследить,и Я думал, что это связано с вычислением по модулю питонов, для которого эта страница so занимает высокое место.
модуль является математической операцией, иногда описываемой как » арифметика часов.»Я нахожу, что описание его просто как остатка вводит в заблуждение и сбивает с толку, потому что оно маскирует реальную причину, по которой оно так часто используется в информатике. Он действительно используется для обертывания циклов.
подумайте о часах: Предположим, вы смотрите на часы в «военном» времени, где диапазон времени идет от 0:00 до 23.59. Теперь, если вы хотите, чтобы что-то происходило каждый день в полночь, вы бы хотели, чтобы текущее время mod 24 равняется нулю:
вы можете думать о всех часах в истории, обертывающих вокруг круга 24 часов снова и снова, и текущий час дня-это бесконечно длинное число mod 24. Это гораздо более глубокая концепция, чем просто остаток, это математический способ борьбы с циклами, и это очень важно в информатике. Он также используется для обертывания массивов, что позволяет увеличить индекс и использовать модуль для вернитесь к началу после того, как достигнете конца массива.
выражение, подобное «x % y», вычисляется как остаток «x / y». Правила приоритета похожи на » / «и»*».
[обновление для Python 3]
комментарии пользователя n00p:
9/2-4.5 в python. Вы должны сделать целочисленное деление следующим образом: 9//2 Если вы хотите, чтобы python сказал вам, сколько целых объектов осталось после деления(4).
если быть точным, целое число раньше разделение было по умолчанию в Python 2:
в Python 3 Теперь 9 / 2 результаты 4.5 действительно, но имейте в виду, что оригинальный ответ очень старый.
Вы можете сказать: «Ладно, но почему я не могу просто воспользоваться pip, запустив команду pip?» Ответом будет: «Да, но контролировать вы ее будете меньше». Я объясню, что значит «контролировать меньше» на примере.
Предположим, у меня установлены две версии Python, например, Python 3.7 и 3.8 (это очень распространено среди людей, которые работают на Mac OS или Linux, не говоря уже о том, что вы возможно захотели поиграться с Python 3.8, и у вас уже стоял Python 3.7). Итак, если вы введете pip в терминале, для какого интерпретатора Python вы установите пакет?
А что происходит, когда я нахожусь в активированной среде?
Во-первых, если вы пользуетесь Windows, вам все равно захочется использовать python-m pip, чтобы вы в своей среде могли обновить pip.
Во-вторых, даже если вы используете другую операционную системы, я бы сказал, что все равно нужно пользоваться python-m pip, поскольку он будет работать независимо от ситуации. Он предупредит вас об ошибке, если вы забудете активировать среду, а любой человек, который за вами будет наблюдать, будет перенимать лучшие практики. И лично я не считаю, что экономия 10 нажатий на клавиатуру – весомая цена для неиспользования хорошей практики. А еще эта команда поможет вам предотвратить ошибки при написании сценариев автоматизации, которые будут выполнять заведомо некорректные операции, если вы забудете активировать среду.
ВСЕГДА пользуйтесь средой! Не ставьте все подряд в глобальный интерпретатор!
Когда мы говорим о том, как избежать путаницы при установке в Python, хочу подчеркнуть, что мы вообще не должны устанавливать ничего в глобальный интерпретатор Python, когда работаем локально (контейнеры – это совсем другое дело)! Если это предустановленный Python вашей системы, то в случае, если вы установите какую-то несовместимую версию библиотеки, на которую опирается ваша ОС, то фактически сломаете систему.
Но даже если вы установите отдельно для себя копию python, я все равно настоятельно не рекомендую ставить прямо в нее при локальной разработке. В конечном счете в своих проектах вы будете использовать различные пакеты, которые могут друг с другом конфликтовать, и у вас не будет четкого представления о зависимостях внутри ваших проектов. Гораздо лучше использовать среды, чтобы изолировать отдельные проекты и инструменты для них друг от друга. В сообществе Python используются два типа сред: виртуальные среды и conda среды. Существует даже специальный способ изолированной установки инструментов Python.
Если вам нужно установить инструмент
Для изолированной установки инструмента, я могу порекомендовать использовать pipx. Каждый инструмент получит свою собственную виртуальную среду, чтобы не конфликтовать с другими. Таким образом, если вы хотите иметь всего одну установку, к примеру, Black, вы можете работать, не сломав случайно свою единственную установку mypy.
Если вам нужна среда для проекта (и вы не пользуетесь conda)
Сегодня некоторые разработчики по-прежнему отдают предпочтение virtualenv, поскольку она доступна на Python 2 и в ней есть некоторые дополнительные функции. Лично меня мало интересуют дополнительные функции, и наличие интегрированной venv означает, что мне не нужно использовать pipx для установки virtualenv на каждой машине. Но если venv не отвечает вашим потребностям, и вы хотите виртуальную среду, то посмотрите, предлагает ли virtualenv то, что вам нужно.
Если вы используете conda
Если вы используете conda, то можете использовать среды conda для получения того же эффекта, который могут предложить виртуальные среды, предоставляемые venv. Я не собираюсь вдаваться в то, нужно ли вам использовать conda или venv в вашей конкретной ситуации, но если вы используете conda, то знаете, что вы можете (и должны) создавать среды conda для своей работы, вместо того чтобы устанавливать все подряд в свою системную установку. Так вы сможете получить четкое понимание того, какие зависимости есть у вашего проекта (и это хорошая причина, чтобы использовать miniconda вместо полноценной anaconda, поскольку в первой меньше десятой части объема последней).
Всегда есть контейнеры
Работать в контейнере – это способ не разбираться со средой вообще, так как вся ваша «машина» станет отдельной средой. До тех пор, пока вы не установили Python в систему контейнера, вы должны спокойно иметь возможность сделать глобальную установку, чтобы ваш контейнер оставался простым и понятным.
Повторюсь, чтобы вы действительно поняли суть…
Не устанавливайте ничего в свой глобальный интерпретатор Python! Всегда старайтесь использовать среду для локальной разработки!
Я уже не могу сказать, сколько раз мне приходилось помогать кому-то, кто думал, что pip устанавливал в один интерпретатор Python, а на самом деле устанавливал в другой. И это неизмеримое количество также относится к тем моментам, когда люди ломали всю систему или задавались вопросом, почему они не смогли установить что-то, что противоречило какой-то другой вещи, которую они поставили ранее для другого проекта и т.д. из-за того, что они не потрудились настроить среду на своей локальной машине.
Поэтому, чтобы и вы и я могли спать спокойно, используйте python-m pip и старайтесь всегда использовать среду.
Что означает self в Python?
В Python self является причиной многих проблем для разработчиков, которые занимаются объектно-ориентированным программированием, давайте попробуем разобраться в этом вопросе!
Когда я начал всерьез интересоваться Python и объектно-ориентированным программированием, я никак не мог понять одну вещь: self.
Сначала я просто добавлял его внутри своих методов и перед каждым атрибутом, не понимая, что происходит на заднем плане, потому что в целом программа работала нормально.
Очень важно, чтобы вы понимали, что означает это “self” и почему оно полезно при разработке на Python.
Это ключевое понятие в объектно-ориентированном программировании, которое вам необходимо понять!
Создадим класс
Допустим, вы фанат велоспорта и хотите создать программу для борьбы с вашей всепоглощающей зависимостью от облегающих спортивных шорт:
Для начала я напомню вам разницу между переменной экземпляра и переменной класса, чтобы вам было понятнее:
Переменные класса – это переменные, которые являются общими для всех экземпляров вашего класса.
В нашем классе Velo переменная wheels является переменной класса.
Это вполне логично, потому что почти все велосипеды работают на двух колесах и не более, если только вы не живете в Юго-Восточной Азии и не ездите регулярно на тук-туке.
Мы определяем их внутри класса, но вне всех остальных методов!
Примечание. Внутри класса мы говорим уже не о функциях, а о методах.
С другой стороны, у нас есть переменные экземпляра, значения которых отличаются от экземпляра к экземпляру.
В нашем примере переменные self.brand, self.price и self.weight являются переменными экземпляра.
Как вы можете видеть, они определяются внутри метода init.
В Python этот специальный метод выполняется автоматически каждый раз, когда вы создаете новый объект из своего класса.
Поэтому вы должны вложить все, что свойственно объекту, который вы хотите создать.
Давайте посмотрим, что произойдет, если я создам два экземпляра класса Velo и попытаюсь получить доступ к этим переменным:
Как я уже сказал, все экземпляры имеют доступ к переменным класса, вот почему два моих велосипеда имеют по два колеса, и мне не нужно ничего указывать.
Однако вы можете видеть, что каждый велосипед имеет свой собственный бренд, потому что это два разных экземпляра!
В чем цель self?
Когда я создавал свой метод init, вы заметили, что в дополнение к параметрам я добавил слово self.
Я также использовал его для определения переменных экземпляра.
Self используется для представления экземпляра класса! Благодаря ему я могу получить доступ к атрибутам и методам своего класса.
Давайте создадим метод экземпляра, чтобы вы могли увидеть это на практике:
Я создал метод drive в классе Velo и указал self в качестве первого параметра:
Поэтому я могу вызвать этот метод drive на всех созданных мною экземплярах.
Примечание. Обратите внимание, что вам не нужно явно использовать слово self, поскольку оно не является зарезервированным словом в Python. Если вы пришли из другого языка программирования, например, JavaScript, вам, возможно, привычнее это использовать. Поэтому вы можете использовать Maria вместо self, и это будет работать точно так же.
В Python мы традиционно используем слово self, но вы можете поступать так, как хотите (мы не советуем, даже если нам нравится Мария )!
С другой стороны, есть правило, которое вы должны соблюдать абсолютно точно:
Когда вы определяете метод экземпляра, ваш экземпляр, то есть self (или слово, которое вы выбрали для обозначения вашего экземпляра), всегда должен передаваться в первой позиции, это обязательно, поэтому обратите на это внимание.
Секрет self
Возможно, вы заметили, но в последнем примере я вызвал метод drive без передачи каких-либо аргументов, и все же код сработал. Мне удалось вывести сообщение с брендом велосипеда текущего экземпляра.
Вы можете задаться вопросом, как мой метод drive знает, что нужно использовать атрибуты именно этого экземпляра, а не другого?
Я думаю, вы поняли, это все self!
Вот что происходит за кулисами:
Интерпретатор Python автоматически выполняет “преобразование” за вас!
С одной стороны, это делает ваш код более эстетичным, а с другой – облегчает жизнь, когда вы хотите наследовать свой класс от других классов.
И, очевидно, если вы забудете добавить self при определении метода экземпляра, у вас возникнут небольшие проблемы, когда вы захотите его использовать:
Эта ошибка часто непонятна людям, не привыкшим к объектно-ориентированному программированию.
Python сообщает нам, что методу drive был передан аргумент (1 was given), однако, если посмотреть на наш код, мы не передаем никакого аргумента.
Как мы только что видели выше, в фоновом режиме Python использует ваш класс для выполнения метода drive и автоматически передает экземпляр в качестве первого аргумента.
Итак, аргумент передается методу drive, просто вы этого не видите, и это делаете не вы, Python сам об этом позаботится.
Поэтому вы должны указать self в качестве первого параметра в определении метода drive, чтобы использовать его с экземпляром velo_01.
Синтаксис Python — большая шпаргалка
Дзен Python ↑
Пионер Python Тим Петерс (Tim Peters) кратко сформулировал направляющие и руководящие принципы BDFL એ для разработки на Python в 20-ти афоризмах, но только 19 из них были записаны.
В переводе на русский: ↑
Основы Python ↑
Математические операторы ↑
В порядке уменьшения приоритета при вычислениях арифметических выражений:
Примеры выражение в интерактивной консоли Python:
Типы данных ↑
Конкатенация и репликация строк ↑
Переменные ↑
Переменной можно присвоить любое имя, если оно отвечает следующим трем правилам:
_spam не надо использовать в коде.
Комментарии ↑
Комментарий в строке:
Комментарий в несколько строк:
Комментарий в коде:
Пожалуйста, обратите внимание на два пробела перед комментарием.
Функция print() ↑
Функция input() ↑
Функция len() ↑
Вычисляет количество символов в строке:
Примечание: не используйте len для проверки наличия символов в строке, элементов в списке, словаре и прочее. Для этого применяйте логические операторы.
Функции str(), int() и float()/h3>
Преобразование целого значения в строку или в число с плавающей точкой:
Преобразование чисел с плавающей точкой в целые:
Управление вычислениями ↑
Операторы сравнения ↑
В зависимости от операндов эти операторы возвращают значениея True или False.
Логические выражения ↑
НЕТ (даже если верно в Python):
ДА (даже если верно в Python):
Эти выражения эквивалентны:
Логические (булевы) операторы ↑
Существует всего три булевых оператора: and (И), or (ИЛИ) и not (НЕТ).
Таблица для использования оператора and :
Таблица для использования оператора or :
Таблица для использования оператора not :
Логические операторы и операторы сравнения ↑
Вы также можете использовать несколько логических операторов в выражении вместе с операторами сравнения:
Оператор if ↑
Оператор else ↑
Оператор elif ↑
Оператор цикла while ↑
Оператор break ↑
В циклических конструкциях оператор break немедленно проиводит к выходу из цикла:
Оператор continue ↑
В циклических конструкциях оператор continue немедленно возвращается к началу цикла. Таким образом, при опроеделенных условиях можно миновать часть кода тела цикла и продолжить его выполенение.
Оператор цикла for и функция range() ↑
Для обратного отсчета можно использовать отрицательное значение параметра step
Конструкция for else ↑
Конструкция позволяет записать оператор для выполнения полного цикла. Полезно, только когда в цикле может возникнуть условие выхода по break :
Импорт модулей ↑
Завершение программы с использованием функции sys.exit() ↑
Функции ↑
Возвращаемое значение и return ↑
При создании функции оператором def с помощью оператора return можно указать, каким будет возвращаемое значение. Оператор return используется следующим образом:
Значение или выражене, результат которого возвращается вызывающей функции.
Значение None ↑
Ключевое слово Arguments and print() ↑
Локальная и глобальная область ↑
Код, расположенный в глобальной зоне видимости не может использовать какие-либо локальные переменные.
Однако, в локальной зоне можно обращаться к глобальным переменным.
Код внутри функции не может использовать переменные из любой другой функции кроме зоны глобальной видимости.
Различные переменныу могут иметь одинаковые имена, если они находятся в разных зонах видимости. То есть может существовать локальная переменная с именем spam и глобальная переменная с именем spam и это две разные переменные.
Оператор global ↑
Если внутри функции необходимо изменить глобальную переменную, то используется оператор global :
Существует четыре правила для определения локальных и глобальных переменных переменных:
Если переменная используется в вне всех функций, в глобальной зоне видимости, то она всегда является глобальной переменной.
В противном случае, если переменная используется в операторе присваивания в функции, она является локальной переменной.
Но если переменная не используется в операторе присваивания, это глобальная переменная.
Обработка исключений ↑
Основы обработки исключений ↑
Final code in exception handling ↑
Код в секции finally выполняется всегда независимо от того, было ли вызвано исключение или нет, и даже если исключения не было.
Списки ↑
Получение элемента списка по индексу ↑
Отрицательные индексы ↑
Получение фрагментов списков ↑
Получения фрагмена списка с помощью копирования полного списка с последующим добавлением:
Получение количества элементов списка с использованием len() ↑
Изменение значений элементов списка по индексу ↑
Объединение и репликация списков ↑
Удаление элементов списка, используя del ↑
Использование цикла for для списков ↑
Циклический просмотр нескольких списков с помощью zip() ↑
in и not в операторах ↑
Трюк множественного присва́ивания ↑
Трюк с множественным присва́иванием позволяет назначать нескольким переменным списка в одной строке кода. Например:
Можно ввести следующую строку кода:
Трюк множественного присва́ивания также иможно спользовать для замены значений в двух переменных:
Расширенные операторы присваивания ↑
Метод index() для поиска значение в списке ↑
Методы append() и insert() для добавления элементов в список ↑
append():
insert():
Метод rcodeove() для удаления элементов из списка ↑
Если в списке есть несколько одинаковых по значению элементов, то по умолчанию удаляется только первый элемент.
Методом sort() для сортировки списка ↑
Кроме того, можно передать True для параметра reverse для сортировки в обратном порядке:
Если вам нужно отсортировать значения в обычном алфавитном порядке, то при вызове метода sort() передайте str.lower в качестве аргумента key :
Кроме того, для определения нового списка есть функция sorted :
Тип данных кортеж ↑
Главное, чем кортежи отличаются от списков, то, что кортежи, как и строки, неизменны.
Функции list() и tuple() ↑
Словари и структуры данных ↑
Методы keys(), values() и itcodes() ↑
Проверка наличия ключа или значения в словаре ↑
Метод get() ↑
Метод setdefault() ↑
Рассмотрим этот код:
Красивая печать ↑
Объединение двух словарей ↑
Наборы ↑
Набор — неупорядоченная коллекция элементов с уникальными значениями. Наиболее эффективно применять для проверки членства и устранении дубликатов. Объекты Set поддерживают математические операции, такие как объединение, пересечение, разность и симметричная разность.
Инициализация набора ↑
Есть несколько способов создания наборов: использование фигурных скобок <> и встроенной функции set()
Наборы: неупорядоченные коллекции уникальных элементов ↑
Из набора автоматически удаляются все повторяющиеся элементы.
И как неупорядоченный тип данных, наборы не индексируются.
Методы add() и update() объекта set ↑
Используйте метод add() для добавления простого элемента в набор.
И метод update() для множественной операции добавления.
Методы rcodeove() и discard() объекта set ↑
Оба метода удаляют элемент из набора, но rmove() вызовет key error при отсутствии элемента в наборе.
discard() не вызовет никаких ошибок.
Набор union() ↑
union() или | создаст новый набор, который содержит все элементы из предоставленных наборов.
Пересечение наборов ↑
intersection или & возвращает набор только тех элементов, которые принадлежат всем наборам одновременно.
Разность наборов ↑
Симметричная разность наборов ↑
symetric_difference или ^ возвращает набор из тех элементов, которые не являются общими.
Модуль itertools ↑
Модуль itertools представляет собой коллекцию инструментов оптимизорованных по скорости и использованию памяти для работы с итераторами(например, списками или словарями).
Модуль стандартизирует основной набор быстрых, эффективных по памяти инструментов, которые полезны сами по себе или в сочетании. Вместе они образуют «алгебру итераторов», позволяющую быстро и эффективно создавать специализированные инструменты в чистом Python.
Модуль itertools есть в стандартнй библиотеке и может быть без проблем импортирован.
Кроме того, будет использоваться модуль operator, который необязателен, но полезен в примерах ниже.
accumulate() ↑
Создание итератора с функцией итерирования (перебора).
operator.mul перемножает два числа:
Передавать функцию итерирования необязательно:
Если нет функции, то элементы итератора суммируются:
combinations() ↑
combinations_with_replaccodeent() ↑
Аналогично combinations(), но элементы в комбинациях могут повторятся более одного раза.
count() ↑
Создает итератор, который возвращает равномерно распределенные значения, начиная с номера start.
cycle() ↑
Эта функция проходит через итератор бесконечно.
Достигнув конца итерации, она начинается заново с самого начала.
chain() ↑
Объединяет серию итераций в одну длинную итерацию.
compress() ↑
dropwhile() ↑
filterfalse() ↑
groupby() ↑
Проще говоря, эта функция группирует элементы вместе.
islice() ↑
permutations() ↑
Все возможные перестановки элементов итератора
product() ↑
Создает декартовы произведения из серии итераций.
repeat() ↑
starmap() ↑
takewhile() ↑
Вернуть n независимых итераторов из одной итерации.
zip_longest() ↑
Comprehensions ↑
Понимание списка ↑
Set comprehension ↑
Dict comprehension ↑
A List comprehension can be generated from a dictionary:
Манипулирование строками ↑
Escape-символы ↑
Сырые строки ↑
Необработанная строка полностью игнорирует все escape-символы и печатает любой обратный слеш, который появляется в строке.
Примечание: в основном используется для определения регулярного выражения (см. пакет re )
Многострочный текст в тройных кавычках ↑
Генерируется та же строка, что и выше.
Индексирование и нарезка строк ↑
in и not в операторах манипулирования строками ↑
in и not в операторах для списков ↑
Методы upper(), lower(), isupper() и islower() для строк ↑
Методы isXХХ в строках ↑
Методы startswith() и endswith() в строках ↑
Методы join() и split() для строк ↑
Выравнивание текста с rjust(), ljust() и center() ↑
Необязательный второй аргумент для rjust() и ljust() будет указывать символ заполнения, отличный от пробела. Запишите в интерактивной оболочке:
Создание пустого пространства с strip(), rstrip() и lstrip() ↑
Копирование и вставка строк с помощью модуля pyperclip (требуется установка pip) ↑
Форматирование строк ↑
% operator ↑
Можно использовать спецификатор формата %x для преобразования целочисленного значения в строку:
Форматирование строк (str.format) ↑
В Python 3 появился новый способ форматирования строк, который позже был перенесен в Python 2.7, что делает синтаксис для форматирования строк более понятным.
Официальная документация Python 3.x рекомендует str.format с оператором % :
Операции форматирования, описанные здесь, обнаруживают различные причуды, которые приводят к ряду распространенных ошибок (таких как неправильное отображение кортежей и словарей). Использование более новых форматированных строковых литералов или интерфейса str.format() помогает избежать этих ошибок. Эти альтернативы также предоставляют более мощные, гибкие и расширяемые подходы к форматированию текста.
Ленивое форматирование ↑
Форматирование строки %s можно использовать только в тех функциях, которые могут выполнять ленивую оценку параметров. Наиболее распространенным из них является ведение журнала:
Отформатированные строковые литералы или f‑строки (Python 3.6+) ↑
Можно даже встроить арифметику:
Tcodeplate-строки ↑
Более простой и менее мощный механизм, который, однако, рекомендуется при обработке строк формата, сгенерированных пользователями. Из-за их уменьшенной сложности строки tcodeplate являются более безопасным выбором.
Регулярные выражения ↑
В Python все функции для регулярных выражений находятся в модуле re :
Соответствующие объекты Regex ↑
Группировка в круглые скобки ↑
Чтобы получить сразу все группы: используйте метод groups() — обратите внимание на форму множественного числа для имени.
Сопоставление нескольких групп с Pipe ↑
| характер называется Pipe (трубой). Вы можете использовать его везде, где хотите сопоставить одно из многих выражений. Например, регулярное выражение r’Batman | Tina Fey ‘будет соответствовать либо’ Batman ‘, либо’ Tina Fey ‘.
Вы также можете использовать Pipe для сопоставления одного из нескольких шаблонов как части вашего регулярного выражения:
Необязательное соответствие с вопросительным знаком ↑
Совпадение нуля или более со звездой ↑
Знак * (называемый звездой или звездочкой) означает «совпадение ноль или более» — группа, предшествующая звездочке, может встречаться в тексте любое количество раз.
Соответствие одного или нескольких с плюсом ↑
В то время как * означает «совпадение ноль или больше», + (или плюс) означает «совпадение одного или нескольких». Группа, предшествующая плюсу, должна появиться хотя бы один раз. Не обязательно:
Соответствие определенным повторениям фигурными скобками ↑
Если у вас есть группа, которую вы хотите повторить определенное количество раз, после группы в регулярном выражении укажите число в фигурных скобках. Например, регулярное выражение (Ha) <3>будет соответствовать строке «HaHaHa», но не будет соответствовать строке «HaHa», поскольку последняя имеет только два повтора группы (Ha).
Вместо одного числа вы можете указать диапазон, написав минимум, запятую и максимум между фигурными скобками. Например, регулярное выражение (Ha) <3,5>будет соответствовать «HaHaHa», «HaHaHaHa» и «HaHaHaHaHa».
Жадное и нежное соответствие ↑
Регулярные выражения Python по умолчанию являются жадными, что означает, что в неоднозначных ситуациях они будут соответствовать максимально длинной строке. Нежадная версия фигурных скобок, которая соответствует самой короткой строке, имеет закрывающую фигурную скобку, за которой следует вопросительный знак.
Метод findall() ↑
При вызове регулярного выражения без групп, например \d-\d\d\d-\d\d\d\d, метод findall() возвращает список совпадений ng, например [‘415-555- 9999, 212-555-0000].
При вызове регулярного выражения с группами, например (\d\d\d)-d\d)-(\d\ d\d\d), метод findall() returns a list of es of strings (одна строка для каждой группы), например, [(‘415’, ‘, ‘9999’), (‘212’, ‘555’, ‘0000’)].
Создание собственных классов персонажей ↑
Бывают случаи, когда вы хотите сопоставить набор символов, но классы сокращенных символов (\d, \w, \s и т. Д.) Слишком широки. Вы можете определить свой собственный класс символов, используя квадратные скобки. Например, класс символов [aeiouAEIOU] будет соответствовать любой гласной, как в нижнем, так и в верхнем регистре.
Вы также можете указать диапазоны букв или цифр, используя дефис. Например, класс символов [a-z A-Z 0-9] будет соответствовать всем строчным буквам, прописным буквам и цифрам.
Поместив символ вставки (^) сразу после открывающей скобки класса символов, можно создать отрицательный класс символов. Отрицательный класс символов будет соответствовать всем символам, не входящим в этот класс символов. Например, введите в интерактивную оболочку следующее:
Знаки каретки и знака доллара ↑
Вы также можете использовать символ вставки (^) в начале регулярного выражения, чтобы указать, что совпадение должно произойти в начале искомого текста..
Точно так же вы можете поставить знак доллара ($) в конце регулярного выражения, чтобы указать, что строка должна заканчиваться этим шаблоном регулярного выражения.
Строка регулярного выражения r’^Hello’ соответствует строкам, начинающимся с ‘ Hello ‘:
Строка регулярного выражения r’\d$’ соответствует строкам, которые заканчиваются числовым символом от 0 до 9:
Подстановочный знак ↑
. (или точка) в регулярном выражении называется подстановочным знаком и будет соответствовать любому символу, кроме новой строки:
Сопоставление всего с Dot-Star ↑
Точка-звезда использует жадный режим: он всегда пытается сопоставить как можно больше текста. Чтобы сопоставить любой текст без лишних слов, используйте точку, звездочку и вопросительный знак (.*?). Знак вопроса указывает Python, что нужно искать совпадения без всяких сомнений:
Соответствие новых строк символу точки ↑
Точка-звездочка будет соответствовать всему, кроме новой строки. Передав re.DOTALL в качестве второго аргумента функции re.compile(), вы можете сделать так, чтобы символ точки соответствовал всем символам, включая символ новой строки:
Обзор символов Regex ↑
Соответствие без учета регистра ↑
Чтобы сделать ваше регулярное выражение нечувствительным к регистру, вы можете передать re.IGNORECASE или re.I в качестве второго аргумента для re.compile():
Substituting Strings with the sub() Method ↑
The sub() method for Regex objects is passed two arguments:
The sub() method returns a string with the substitutions applied:
Managing Complex Regexes ↑
To tell the re.compile() function to ignore whitespace and comments inside the regular expression string, “verbose mode” can be enabled by passing the variable re.VERBOSE as the second argument to re.compile().
Now instead of a hard-to-read regular expression like this:
you can spread the regular expression over multiple lines with comments like this:
Handling File and Directory Paths ↑
There are two main modules in Python that deals with path manipulation.
One is the os.path module and the other is the pathlib module.
The pathlib module was added in Python 3.4, offering an object-oriented way
to handle file systcode paths.
Backslash on Windows and Forward Slash on OS X and Linux ↑
On Windows, paths are written using backslashes () as the separator between
folder names. On Unix based operating systcode such as macOS, Linux, and BSDs,
the forward slash (/) is used as the path separator. Joining paths can be
a headache if your code needs to work on different platforms.
Fortunately, Python provides easy ways to handle this. We will showcase
how to deal with this with both os.path.join and pathlib.Path.joinpath
Using os.path.join on Windows:
And using pathlib on *nix:
pathlib also provides a shortcut to joinpath using the / operator:
Notice the path separator is different between Windows and Unix based operating
systcode, that’s why you want to use one of the above methods instead of
adding strings together to join paths together.
Joining paths is helpful if you need to create different file paths under
the same directory.
Using os.path.join on Windows:
Using pathlib on *nix:
The Current Working Directory ↑
Using os on Windows:
Using pathlib on *nix:
Creating New Folders ↑
Using os on Windows:
Using pathlib on *nix:
Oh no, we got a nasty error! The reason is that the ‘delicious’ directory does
not exist, so we cannot make the ‘walnut’ and the ‘waffles’ directories under
it. To fix this, do:
Absolute vs. Relative Paths ↑
There are two ways to specify a file path.
There are also the dot (.) and dot-dot (..) folders. These are not real folders but special names that can be used in a path. A single period (“dot”) for a folder name is shorthand for “this directory.” Two periods (“dot-dot”) means “the parent folder.”
Handling Absolute and Relative Paths ↑
To see if a path is an absolute path:
Using os.path on *nix:
Using pathlib on *nix:
You can extract an absolute path with both os.path and pathlib
Using os.path on *nix:
Using pathlib on *nix:
You can get a relative path from a starting path to another path.
Using os.path on *nix:
Using pathlib on *nix:
Checking Path Validity ↑
Checking if a file/directory exists:
Using os.path on *nix:
Using pathlib on *nix:
Checking if a path is a file:
Using os.path on *nix:
Using pathlib on *nix:
Checking if a path is a directory:
Using os.path on *nix:
Using pathlib on *nix:
Finding File Sizes and Folder Contents ↑
Getting a file’s size in bytes:
Using os.path on Windows:
Using pathlib on *nix:
Listing directory contents using os.listdir on Windows:
Listing directory contents using pathlib on *nix:
To find the total size of all the files in this directory:
WARNING: Directories thcodeselves also have a size! So you might want to
check for whether a path is a file or directory using the methods in the methods discussed in the above section!
Using os.path.getsize() and os.listdir() together on Windows:
Using pathlib on *nix:
Copying Files and Folders ↑
The shutil module provides functions for copying files, as well as entire folders.
While shutil.copy() will copy a single file, shutil.copytree() will copy an entire folder and every folder and file contained in it:
Moving and Renaming Files and Folders ↑
The destination path can also specify a filename. In the following example, the source file is moved and renamed:
If there is no eggs folder, then move() will rename bacon.txt to a file named eggs.
Permanently Deleting Files and Folders ↑
Calling os.unlink(path) or Path.unlink() will delete the file at path.
Calling os.rmdir(path) or Path.rmdir() will delete the folder at path. This folder must be codepty of any files or folders.
Calling shutil.rmtree(path) will rcodeove the folder at path, and all files and folders it contains will also be deleted.
Safe Deletes with the send2trash Module ↑
You can install this module by running pip install send2trash from a Terminal window.
Walking a Directory Tree ↑
pathlib provides a lot more functionality than the ones listed above,
like getting file name, getting file extension, reading/writing a file without
manually opening it, etc. Check out the
official documentation
if you want to know more!
Reading and Writing Files ↑
The File Reading/Writing Process ↑
To read/write to a file in Python, you will want to use the with
statcodeent, which will close the file for you after you are done.
Opening and reading files with the open() function ↑
Writing to Files ↑
Saving Variables with the shelve Module ↑
To open and read variables:
Just like dictionaries, shelf values have keys() and values() methods that will return list-like values of the keys and values in the shelf. Since these methods return list-like values instead of true lists, you should pass thcode to the list() function to get thcode in list form.
Saving Variables with the pprint.pformat() ↑
Reading ZIP Files ↑
Extracting from ZIP Files ↑
The extractall() method for ZipFile objects extracts all the files and folders from a ZIP file into the current working directory.
The extract() method for ZipFile objects will extract a single file from the ZIP file. Continue the interactive shell example:
Creating and Adding to ZIP Files ↑
This code will create a new ZIP file named new.zip that has the compressed contents of spam.txt.
JSON, YAML and configuration files ↑
Open a JSON file with:
Write a JSON file with:
Compared to JSON, YAML allows a much better humain maintainance and gives ability to add comments.
It is a convinient choice for configuration files where human will have to edit.
There are two main librairies allowing to access to YAML files:
Install thcode using pip install in your virtual environment.
The first one it easier to use but the second one, Ruamel, implcodeents much better the YAML
specification, and allow for example to modify a YAML content without altering comments.
Open a YAML file with:
Anyconfig ↑
Anyconfig is a very handy package allowing to abstract completly the underlying configuration file format. It allows to load a Python dictionary from JSON, YAML, TOML, and so on.
Debugging ↑
Raising Exceptions ↑
Exceptions are raised with a raise statcodeent. In code, a raise statcodeent consists of the following:
Often it’s the code that calls the function, not the function itself, that knows how to handle an expection. So you will commonly see a raise statcodeent inside a function and the try and except statcodeents in the code calling the function.
Getting the Traceback as a String ↑
The traceback is displayed by Python whenever a raised exception goes unhandled. But can also obtain it as a string by calling traceback.format_exc(). This function is useful if you want the information from an exception’s traceback but also want an except statcodeent to gracefully handle the exception. You will need to import Python’s traceback module before calling this function.
The 116 is the return value from the write() method, since 116 characters were written to the file. The traceback text was written to errorInfo.txt.
Assertions ↑
An assertion is a sanity check to make sure your code isn’t doing something obviously wrong. These sanity checks are performed by assert statcodeents. If the sanity check fails, then an AssertionError exception is raised. In code, an assert statcodeent consists of the following:
In plain English, an assert statcodeent says, “I assert that this condition holds true, and if not, there is a bug somewhere in the program.” Unlike exceptions, your code should not handle assert statcodeents with try and except; if an assert fails, your program should crash. By failing fast like this, you shorten the time between the original cause of the bug and when you first notice the bug. This will reduce the amount of code you will have to check before finding the code that’s causing the bug.
Logging ↑
To enable the logging module to display log messages on your screen as your program runs, copy the following to the top of your program (but under the #! python shebang line):
Say you wrote a function to calculate the factorial of a number. In mathcodeatics, factorial 4 is 1 × 2 × 3 × 4, or 24. Factorial 7 is 1 × 2 × 3 × 4 × 5 × 6 × 7, or 5,040. Open a new file editor window and enter the following code. It has a bug in it, but you will also enter several log messages to help yourself figure out what is going wrong. Save the program as factorialLog.py.
Logging Levels ↑
Logging levels provide a way to categorize your log messages by importance. There are five logging levels, described in Table 10-1 from least to most important. Messages can be logged at each level using a different logging function.
Level | Logging Function | Description |
---|---|---|
DEBUG | logging.debug() | The lowest level. Used for small details. Usually you care about these messages only when diagnosing problcodes. |
INFO | logging.info() | Used to record information on general events in your program or confirm that things are working at their point in the program. |
WARNING | logging.warning() | Used to indicate a potential problcode that doesn’t prevent the program from working but might do so in the future. |
ERROR | logging.error() | Used to record an error that caused the program to fail to do something. |
CRITICAL | logging.critical() | The highest level. Used to indicate a fatal error that has caused or is about to cause the program to stop running entirely. |
Disabling Logging ↑
After you’ve debugged your program, you probably don’t want all these log messages cluttering the screen. The logging.disable() function disables these so that you don’t have to go into your program and rcodeove all the logging calls by hand.
Logging to a File ↑
Instead of displaying the log messages to the screen, you can write thcode to a text file. The logging.basicConfig() function takes a filename keyword argument, like so:
Lambda Functions ↑
Is equivalent to the lambda function:
It’s not even need to bind it to a name like add before:
Like regular nested functions, lambdas also work as lexical closures:
Примечание: lambda can only evaluate an expression, like a single line of code.
Ternary Conditional Operator ↑
Many programming languages have a ternary operator, which define a conditional expression. The most common usage is to make a terse simple conditional assignment statcodeent. In other words, it offers one-line code to evaluate the first expression if the condition is true, otherwise it evaluates the second expression.
Ternary operators can be chained:
The code above is equivalent to:
args and kwargs ↑
The names args and kwargs are arbitrary — the important thing are the * and ** operators. They can mean:
In a function declaration, * means “pack all rcodeaining positional arguments into a tuple named ”, while ** is the same for keyword arguments (except it uses a dictionary, not a tuple).
In a function call, * means “unpack tuple or list named to positional arguments at this position”, while ** is the same for keyword arguments.
For example you can make a function that you can use to call any other function, no matter what parameters it has:
Inside forward, args is a tuple (of all positional arguments except the first one, because we specified it — the f), kwargs is a dict. Then we call f and unpack thcode so they become normal arguments to f.
You use *args when you have an indefinite amount of positional arguments.
Similarly, you use **kwargs when you have an indefinite number of keyword arguments.
Things to Rcodecodeber(args) ↑
Things to Rcodecodeber(kwargs) ↑
Context Manager ↑
While Python’s context managers are widely used, few understand the purpose behind their use. These statcodeents, commonly used with reading and writing files, assist the application in conserving systcode mcodeory and improve resource managcodeent by ensuring specific resources are only in use for certain processes.
with statcodeent ↑
A context manager is an object that is notified when a context (a block of code) starts and ends. You commonly use one with the with statcodeent. It takes care of the notifying.
For example, file objects are context managers. When a context ends, the file object is closed automatically:
Anything that ends execution of the block causes the context manager’s exit method to be called. This includes exceptions, and can be useful when an error causes you to prcodeaturely exit from an open file or connection. Exiting a script without properly closing files/connections is a bad idea, that may cause data loss or other problcodes. By using a context manager you can ensure that precautions are always taken to prevent damage or loss in this way.
Writing your own contextmanager using generator syntax ↑
It is also possible to write a context manager using generator syntax thanks to the contextlib.contextmanager decorator:
__main__ Top-level script environment ↑
__main__ is the name of the scope in which top-level code executes.
A module’s name is set equal to __main__ when read from standard input, a script, or from an interactive prompt.
For example we are developing script which is designed to be used as module, we should do:
Advantages ↑
setup.py ↑
The setup script is the centre of all activity in building, distributing, and installing modules using the Distutils. The main purpose of the setup script is to describe your module distribution to the Distutils, so that the various commands that operate on your modules do the right thing.
The setup.py file is at the heart of a Python project. It describes all of the metadata about your project. There a quite a few fields you can add to a project to give it a rich set of metadata describing the project. However, there are only three required fields: name, version, and packages. The name field must be unique if you wish to publish your package on the Python Package Index (PyPI). The version field keeps track of different releases of the project. The packages field describes where you’ve put the Python source code within your project.
This allows you to easily install Python packages. Often it’s enough to write:
and module will install itself.
Our initial setup.py will also include information about the license and will re-use the README.txt file for the long_description field. This will look like:
Dataclasses ↑
Dataclasses are python classes but are suited for storing data objects.
This module provides a decorator and functions for automatically adding generated special methods such as __init__() and __repr__() to user-defined classes.
Features ↑
They store data and represent a certain data type. Ex: A number. For people familiar with ORMs, a model instance is a data object. It represents a specific kind of entity. It holds attributes that define or represent the entity.
They can be compared to other objects of the same type. Ex: A number can be greater than, less than, or equal to another number.
Python 3.7 provides a decorator dataclass that is used to convert a class into a dataclass.
Default values ↑
It is easy to add default values to the fields of your data class.
Type hints ↑
Virtual Environment ↑
The use of a Virtual Environment is to test python code in encapsulated environments and to also avoid filling the base Python installation with libraries we might use for only one project.
virtualenv ↑
Install virtualenvwrapper-win (Windows)
Make a Virtual Environment
Anything we install now will be specific to this project. And available to the projects we connect to this environment.
Set Project Directory
To bind our virtualenv with our current working directory we simply enter:
To move onto something else in the command line type ‘deactivate’ to deactivate your environment.
Notice how the parenthesis disappear.
Open up the command prompt and type ‘workon HelloWold’ to activate the environment and move into your root project folder
poetry ↑
Poetry is a tool for dependency managcodeent and packaging in Python. It allows you to declare the libraries your project depends on and it will manage (install/update) thcode for you.
Create a new project
This will create a my-project directory:
The pyproject.toml file will orchestrate your project and its dependencies:
To add dependencies to your project, you can specify thcode in the tool.poetry.dependencies section:
Also, instead of modifying the pyproject.toml file by hand, you can use the add command and it will automatically find a suitable version constraint.
To install the dependencies listed in the pyproject.toml:
To rcodeove dependencies:
For more information, check the documentation.
pipenv ↑
Pipenv is a tool that aims to bring the best of all packaging worlds (bundler, composer, npm, cargo, yarn, etc.) to the Python world. Windows is a first-class citizen, in our world.
Enter your Project directory and install the Packages for your project
Pipenv will install your package and create a Pipfile for you in your project’s directory. The Pipfile is used to track which dependencies your project needs in case you need to re-install thcode.
Activate the Virtual Environment associated with your Python project
Exit the Virtual Environment
Find more information and a video in docs.pipenv.org.
anaconda ↑
Anaconda is another popular tool to manage python packages.
Where packages, notebooks, projects and environments are shared.
Your place for free public conda package hosting.
Make a Virtual Environment
To use the Virtual Environment, activate it by:
Anything installed now will be specific to the project HelloWorld
Exit the Virtual Environment
Опубликовано Вадим В. Костерин
ст. преп. кафедры ЦЭиИТ. Автор более 130 научных и учебно-методических работ. Лауреат ВДНХ (серебряная медаль). Посмотреть больше записей