Как создать файл pycharm yml
Перейти к содержимому

Как создать файл pycharm yml

  • автор:

YAML за 5 минут: синтаксис и основные возможности

YAML — это язык для сериализации данных, который используют DevOps и дата-сайентисты. Рассказываем про синтаксис YAML-файлов.

YAML — это язык для сериализации данных, который отличается простым синтаксисом и позволяет хранить сложноорганизованные данные в компактном и читаемом формате. Рассказываем, как это пригодится для DevOps и виртуализации.

  • Что такое YAML?
  • YAML vs JSON vs XML
  • Характерные особенности YAML
  • Синтаксис YAML
  • Что ещё может YAML?

Что такое YAML?

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

Язык похож на XML и JSON, но использует более минималистичный синтаксис при сохранении аналогичных возможностей. YAML обычно применяют для создания конфигурационных файлов в программах типа Инфраструктура как код (Iac), или для управления контейнерами в работе DevOps.

Чаще всего с помощью YAML создают протоколы автоматизации, которые могут выполнять последовательности команд записанные в YAML-файле. Это позволяет вашей системе быть более независимой и отзывчивой без дополнительного внимания разработчика.

Всё больше и больше компаний используют DevOps и виртуализацию, поэтому YAML — это must have для современного разработчика. Кроме того, YAML легко интегрировать, благодаря поддержке Python (используя PyYAML библиотеку, Docker или Ansible) и других популярных технологий.

YAML vs JSON vs XML

YAML (.yml)

  • понятный человеку код;
  • минималистичный синтаксис;
  • заточен под работу с данными;
  • встроенный стиль, похожий на JSON (YAML является его надмножеством);
  • поддерживает комментарии;
  • поддерживает строки без кавычек;
  • считается «чище», чем JSON;
  • дополнительные возможности (расширяемые типы данных, относительные якоря и маппинг типов с сохранением порядка ключей).

Применение: YAML лучше всего подходит для приложений с большим объемом данных, которые используют DevOps конвейеры или виртуальные машины. Кроме того, улучшение читаемости данных пригодится в командах, где разработчики часто с ними взаимодействуют.

JSON

  • труднее читать;
  • явные, строгие требования к синтаксису;
  • встроенный стиль, похожий на YAML (некоторые парсеры YAML могут читать JSON-файлы);
  • нет комментариев;
  • строкам нужны двойные кавычки.

Применение: JSON используется в веб-разработке — это лучший формат для сериализации и передачи данных через HTTP-соединение.

XML

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

Применение: XML идеален для сложных проектов, которым требуется тонкий контроль над валидацией, схемой и пространством имён. Язык обладает плохой читаемостью, требует большей пропускной способности и ёмкости хранилища, но обеспечивает беспрецедентный контроль.

Характерные особенности YAML

Поддержка мультидокументов

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

Документы разделяются тремя дефисами (—):

--- player: playerOne action: attack (miss) --- player: playerTwo action: attack (hit) --- 

Поддержка комментариев

YAML позволяет добавлять комментарии после символа #, как в Python:

key: #Это однострочный комментарий - value line 5 #Это #многострочный комментарий - value line 13 

Легко читаемый синтаксис

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

Это избавляет от лишних символов, которые есть в JSON и XML (кавычки, скобки, фигурные скобки).

В итоге читаемость файла значительно повышается.

YAML

#YAML Imaro: author: Charles R. Saunders language: English publication-year: 1981 pages: 224 

JSON

Явная и неявная типизация

YAML предлагает как автоопределение типов, так и возможность явно указать тип данных. Чтобы использовать конкретный тип, нужно написать !![тип] перед значением.

# Это значение преобразуется в int: is-an-int: !!int 14.10 # Превращает любое значение в строку: is-a-str: !!str 67.43 # Значение должно быть boolean: is-a-bool: !!bool yes 

Отсутствие исполняемых файлов

YAML не содержит исполняемых файлов. Поэтому можно безопасно обмениваться YAML-файлами с третьей стороной.

Чтобы использовать исполняемые файлы, YAML нужно интегрировать с другими языками, например Perl или Java.

Синтаксис YAML

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

Пары ключ-значение

Большинство данных в YAML-файле хранятся в виде пары ключ-значение, где ключ — это имя пары, а значение — связанные данные.

Скаляры и маппинг

Скаляр представляет собой одно значение, которому соответствует имя.

YAML поддерживает стандартные типы: int и float, boolean, string и null.

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

integer: 25 hex: 0x12d4 #равно 4820 octal: 023332 #равно 9946 float: 25.0 exponent: 12.3015e+05 #равно 1230150.0 boolean: Yes string: "25" infinity: .inf # преобразуется в бесконечность neginf: -.Inf #преобразуется в минус бесконечность not: .NAN #Not a Number null: ~ 

Строки

Строка — это коллекция символов, которая может содержать слово или предложение. Можно использовать либо |, для отдельных строк, либо >, для параграфов.

Кавычки в YAML не нужны.

str: Hello World data: | Это Отдельные Строки data: > Это один параграф текста 

Последовательности

Последовательности — это структуры данных похожие на списки или массивы, которые хранят несколько значений под одним ключом. Они определяются с помощью отступов или [].

shopping: - milk - eggs - juice 

Однострочные последовательности выглядят лаконичнее, но хуже читаются.

shopping: [milk, eggs, juice] 

Словари

Словари — это коллекции пар ключ-значение, которые хранятся под одним ключом. Они позволяют разделить данные на логические категории.

Employees: - dan: name: Dan D. Veloper job: Developer team: DevOps - dora: name: Dora D. Veloper job: Project Manager team: Web Subscriptions 

Словари могут содержать более сложные структуры, что позволяет хранить сложные реляционные данные.

Что ещё может YAML?

  • Anchors (якоря)
  • Templates (шаблоны)
  • Взаимодействие с Docker, Ansible и т. д.
  • Расширенные последовательности и маппинг.
  • Расширенные типы данных (timestamp, null и т. д.)

Работа с файлами в формате YAML#

YAML (YAML Ain’t Markup Language) — еще один текстовый формат для записи данных.

YAML более приятен для восприятия человеком, чем JSON, поэтому его часто используют для описания сценариев в ПО. Например, в Ansible.

Синтаксис YAML#

Как и Python, YAML использует отступы для указания структуры документа. Но в YAML можно использовать только пробелы и нельзя использовать знаки табуляции.

Еще одна схожесть с Python: комментарии начинаются с символа # и продолжаются до конца строки.

Список#

Список может быть записан в одну строку:

[switchport mode access, switchport access vlan, switchport nonegotiate] 

Или каждый элемент списка в своей строке:

- switchport mode access - switchport access vlan - switchport nonegotiate 

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

Словарь#

Словарь также может быть записан в одну строку:

 vlan: 100, name: IT > 
vlan: 100 name: IT 

Строки#

Строки в YAML не обязательно брать в кавычки. Это удобно, но иногда всё же следует использовать кавычки. Например, когда в строке используется какой-то специальный символ (специальный для YAML).

Такую строку, например, нужно взять в кавычки, чтобы она была корректно воспринята YAML:

command: "sh interface | include Queueing strategy:" 

Комбинация элементов#

Словарь, в котором есть два ключа: access и trunk. Значения, которые соответствуют этим ключам — списки команд:

access: - switchport mode access - switchport access vlan - switchport nonegotiate - spanning-tree portfast - spanning-tree bpduguard enable trunk: - switchport trunk encapsulation dot1q - switchport mode trunk - switchport trunk native vlan 999 - switchport trunk allowed vlan 
- BS: 1550 IT: 791 id: 11 name: Liverpool to_id: 1 to_name: LONDON - BS: 1510 IT: 793 id: 12 name: Bristol to_id: 1 to_name: LONDON - BS: 1650 IT: 892 id: 14 name: Coventry to_id: 2 to_name: Manchester 

Модуль PyYAML#

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

pip install pyyaml 

Работа с ним аналогична модулям csv и json.

Чтение из YAML#

Попробуем преобразовать данные из файла YAML в объекты Python.

- BS: 1550 IT: 791 id: 11 name: Liverpool to_id: 1 to_name: LONDON - BS: 1510 IT: 793 id: 12 name: Bristol to_id: 1 to_name: LONDON - BS: 1650 IT: 892 id: 14 name: Coventry to_id: 2 to_name: Manchester 

Чтение из YAML (файл yaml_read.py):

import yaml from pprint import pprint with open('info.yaml') as f: templates = yaml.safe_load(f) pprint(templates) 
$ python yaml_read.py [, , ]

Формат YAML очень удобен для хранения различных параметров, особенно, если они заполняются вручную.

Запись в YAML#

Запись объектов Python в YAML (файл yaml_write.py):

import yaml to_yaml =  'access': ['switchport mode access', 'switchport access vlan', 'switchport nonegotiate', 'spanning-tree portfast', 'spanning-tree bpduguard enable'], 'trunk': ['switchport trunk encapsulation dot1q', 'switchport mode trunk', 'switchport trunk native vlan 999', 'switchport trunk allowed vlan'], > with open('sw_templates.yaml', 'w') as f: yaml.dump(to_yaml, f) with open('sw_templates.yaml') as f: print(f.read()) 

Файл sw_templates.yaml выглядит таким образом:

access: - switchport mode access - switchport access vlan - switchport nonegotiate - spanning-tree portfast - spanning-tree bpduguard enable trunk: - switchport trunk encapsulation dot1q - switchport mode trunk - switchport trunk native vlan 999 - switchport trunk allowed vlan 

Конфигурационные файлы в Python

Конфиги. Все хранят их по разному. Кто-то в .yaml , кто-то в .ini , а кто-то вообще в исходном коде, подумав, что «Путь Django» с его settings.py действительно хорош.

В этой статье, я хочу попробовать найти идеальный (вероятнее всего) способ хранения и использования конфигурационных файлов в Python. Ну, а также поделиться своей библиотекой для них 🙂

Попытка №1

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

Типичный конфиг в этом стиле выглядит так:

# settings.py TWITTER_USERNAME="johndoe" TWITTER_PASSWORD="johndoespassword" TWITTER_TOKEN=". "

Выглядит неплохо. Только одно настораживает, почему секьюрные данные хранятся в коде? Как мы это коммитить будем? Загадка. Разве что вносить наш файл в .gitignore , но это, конечно, вообще не решение.

Да и вообще, почему хоть какие-то данные хранятся в коде? Как мне кажется код, он на то и код, что должен выполнять какую-то логику, а не хранить данные.

Данный подход, на самом деле используется много где. В том же Django. Все думают, что раз это самый популярный фреймворк, который используется в самом Инстаграме, то они то уж плохое советовать не будут. Жаль, что это не так.

Попытка №2

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

Но мы начнём с того, что нам предлагает сам Python — .ini . В стандартной библиотеке имеется библиотека configparser .

Наш конфиг, который мы уже писали ранее:

# settings.ini [Twitter] username="johndoe" password="johndoespassword" token=". "

А теперь прочитаем в Python:

import configparser # импортируем библиотеку config = configparser.ConfigParser() # создаём объекта парсера config.read("settings.ini") # читаем конфиг print(config["Twitter"]["username"]) # обращаемся как к обычному словарю! # 'johndoe'

Все проблемы решены. Данные хранятся не в коде, доступ прост. Но… а если нам нужно читать другие конфиги, ну там json или yaml например, или все сразу. Конечно, есть json в стандартной библиотеке и pyyaml , но придётся написать кучу (ну, или не совсем) кода для этого.

Попытка №3

А сейчас, я хотел бы показать Вам свою библиотеку, которая призвана решить все эти проблемы (ну, или хотя бы уменьшить ваши страдания :)).

Называется она betterconf и доступна на PyPi.

Установка так же проста, как и любой другой библиотеки:

pip install betterconf

Изначально, наш конфиг представлен в виде класса с полями:

# settings.py from betterconf import Config, field class TwitterConfig(Config): # объявляем класс, который наследуется от `Config` username = field("TWITTER_USERNAME", default="johndoe") # объявляем поле `username`, если оно не найдено, выставляем стандартное password = field("TWITTER_PASSWORD", default="johndoespassword") # аналогично token = field("TWITTER_TOKEN", default=lambda: raise RuntimeError("Account's token must be defined!") # делаем тоже самое, но при отсутствии токенавозбуждаем ошибку cfg = TwitterConfig() print(cfg.username) # 'johndoe'

По умолчанию, библиотека пытается взять значения из переменных окружения, но мы также можем настроить и это:

from betterconf import Config, field from betterconf.config import AbstractProvider import json class JSONProvider(AbstractProvider): # наследуемся от абстрактного класса SETTINGS_JSON_FILE = "settings.json" # путь до файла с настройками def __init__(self): with open(self.SETTINGS_JSON_FILE, "r") as f: self._settings = json.load(f) # открываем и читаем def get(self, name): return self._settings.get(name) # если значение есть - возвращаем его, иначе - None. Библиотека будет выбрасывать свою исключением, если получит None. provider = JSONProvider() class TwitterConfig(Config): username = field("twitter_username", provider=provider) # используем наш способ получения данных # . cfg = TwitterConfig() # . 

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

Хорошо, а что если у нас в конфигах есть булевые значения, или числа, они же в итоге будут все равно приходить в строках. И для этого есть решение:

from betterconf import Config, field # из коробки доступно всего 2 кастера from betterconf.caster import to_bool, to_int class TwitterConfig(Config): # . post_tweets = field("TWITTER_POST_TWEETS", caster=to_bool) # . 

Таким образом, все похожие на булевые типы значения (а именно true и false будут преобразованы в питоновский bool . Регистр не учитывается.

Свой кастер написать также легко:

from betterconf.caster import AbstractCaster class DashToDotCaster(AbstractCaster): def cast(self, val): return val.replace("-", ".") # заменяет тире на точки to_dot = DashToDotCaster() # . 

Итоги

Таким образом, мы пришли к выводу, что хранить настройки в исходных кодах — не есть хорошо. Для этого уже придуманы различные форматы. Ну, а вы познакомились с ещё одной полезной (как я считаю :)) библиотекой.

P.S

Да, также можно было включить и Pydantic , но я считаю, что он слишком НЕлегковесный для таких задач.

PyCharm: как её установить и использовать

Коротко и ясно о PyCharm — популярной IDE для программирования на Python.

Иллюстрация: Оля Ежак для Skillbox Media

Иван Стуков

Иван Стуков
Журналист, изучает Python. Любит разбираться в мелочах, общаться с людьми и понимать их.

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

  • Что такое PyCharm
  • Какие у неё системные требования
  • Чем различаются версии Community и Pro
  • Как установить PyCharm
  • Как с ней работать

Что такое PyCharm

PyCharm — это интегрированная среда разработки на языке Python, созданная компанией JetBrains. Среди питонистов эта IDE вторая по популярности после редактора кода Visual Studio Code: как основную её используют 31% разработчиков.

В PyCharm есть все инструменты, чтобы писать, отлаживать и тестировать код. Например, можно быстро исправить программу сразу в нескольких местах, а встроенный форматер приведёт её в соответствие со стандартом PEP 8 .

Также IDE позволяет использовать в проектах другие языки программирования, синхронизировать код с системами контроля версий и развёртывать его.

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

Системные требования PyCharm

Операционная система:

  • Windows 8, 10 или 11 (64-битные версии);
  • macOS 10.14 или более поздняя версия;
  • Linux со средой GNOME, KDE или Unity DE; если дистрибутив не включает Glibc 2.14 или более позднюю версию (например, RHEL 6 или CentOS 6), то PyCharm может быть для него недоступен.

Процессор: никаких специальных требований нет, но рекомендуется, чтобы он был многоядерным, так как PyCharm поддерживает многопоточность. Это позволит выполнять операции быстрее.

Оперативная память: 4 ГБ свободной RAM. Рекомендуется, чтобы общая оперативная память у устройства была 8 ГБ.

Место на диске: 2,5 ГБ и ещё 1 ГБ для кэша. Рекомендуется использовать SSD и иметь хотя бы 5 ГБ свободного пространства.

Разрешение экрана: не менее 1024 × 768 пикселей, рекомендуется 1920 × 1080.

Версия Python:

  • Python 2.7;
  • Python 3.6 или более поздняя версия.

Чем различаются версии Community и Pro

У PyCharm есть две версии: бесплатная называется Community, а платная — Pro, или Professional.

Community подойдёт для тех, кто только изучает программирование или работает над небольшим проектом. Она предназначена для кодинга на чистом Python, хотя и поддерживает несколько дополнительных языков и форматов: Jython, HTML, XML, JSON, YAML, XSL, XPath и Markdown. Используя плагины, можно также установить Rust и Dart.

Professional умеет всё то же, что и Community, плюс кое-что ещё. Например:

  • в бэкенде — поддерживает Cython и SQL;
  • во фронтенде — работает с JavaScript, TypeScript, CSS, Sass, SCSS, Less. В качестве плагинов доступны Haml, Slim, Liquid.

Полноценная веб-разработка доступна только в редакции Pro; в ней есть поддержка веб-фреймворков:

  • для Python: Django, Flask, Pyramid;
  • для других языков: React, React Native, Angular, Node.js, Next.js, Vue.js.

К слову, в Community из фреймворков — только PyQt.

Ещё крупные различия:

  • из инструментов сборки в Community есть Virtualenv/Buildout, в Pro — дополнительно NPM, Webpack, Gulp, Grunt, Vite;
  • в Pro есть поддержка удалённых интерпретаторов: SSH, Docker, Docker Compose, WSL, Vagrant;
  • в Community совместная разработка ограничена сеансами по 30 минут, в которых не больше трёх гостей, в Pro ограничений по времени нет, а гостей может быть вплоть до 50.

Подробнее различия между версиями можно посмотреть на сайте JetBrains. Ах да: если вас заинтересовала версия Pro, но вы ещё побаиваетесь её покупать, для неё есть бесплатный 30-дневный пробный период.

Как установить PyCharm

Скачать PyCharm можно двумя способами: напрямую с сайта разработчика или через Toolbox — приложение для управления инструментами от JetBrains.

Установка через Toolbox

JetBrains рекомендует использовать для управления своими продуктами именно Toolbox. Приложение позволяет быстро и из одного места устанавливать нужные инструменты, автоматически обновлять их сразу вместе с плагинами, откатываться до предыдущей версии и работать в нескольких версиях параллельно.

Toolbox будет особенно удобен, если вы пользуетесь сразу несколькими продуктами от JetBrains. Скачать приложение можно здесь.

Toolbox для Windows

  • Скачать и запустить установщик в формате .exe.
  • Следовать инструкциям установщика.
  • Toolbox будет доступен по иконке на панели задач.

Toolbox для macOS

  • Скачать образ диска в формате .dmg. Обратите внимание, что есть две версии файла: для процессоров Intel и Apple silicon.
  • Смонтировать образ в системе и перетащить JetBrains Toolbox в папку «Приложения» (Applications).

Toolbox для Linux

  • Скачать архив в формате .tar.gz.
  • Распаковать его в директорию, которая поддерживает выполнение файлов.
  • Запустить jetbrains-toolbox. После первого запуска в главном меню появится иконка , по которой Toolbox и будет доступен.

После запуска Toolbox любую редакцию PyCharm в любой версии можно скачать и запустить прямо из приложения.

Автономная установка

Скачать PyCharm можно и отдельно, без использования дополнительных приложений. Чтобы пощупать PyCharm для себя, сначала можно скачать Community Edition. Версия Pro доступна по той же ссылке.

Для Windows

  • Скачать установщик в формате .exe. Их есть два вида: для компьютеров с процессором ARM64 и для всех остальных.
  • После загрузки файла открывается страница с благодарностью. На ней можно загрузить контрольную сумму SHA, чтобы проверить целостность установщика.
  • Запустить установщик, следовать его инструкциям, выбрать нужные параметры.

Для macOS

  • Скачать образ диска в формате .dmg. Их два вида: для процессоров Intel и Apple silicon.
  • После загрузки файла открывается страница с благодарностью. На ней можно загрузить контрольную сумму SHA, чтобы проверить целостность образа диска.
  • Смонтировать образ в системе и перетащить PyCharm в папку «Приложения» (Applications).

Для Linux

  • Скачать архив в формате .tar.gz. Их два вида: для компьютеров с процессором ARM64 и для всех остальных.
  • После загрузки файла открывается страница с благодарностью. На ней можно загрузить контрольную сумму SHA, чтобы проверить целостность архива.
  • Распаковать скачанный файл. Если нынешняя директория «Загрузки» (Downloads) не поддерживает выполнение файла, то распакуйте его в другую. Сделать это можно с помощью команды:

tar xzf pycharm-*.tar.gz -C

Вместо звёздочки нужно указать версию PyCharm, вместо — директорию. Производитель рекомендует использовать директорию /opt. Например:

Как использовать PyCharm: пишем первую программу

Напишем и запустим программу, которая будет выводить «Hello, world!». Для этого откроем PyCharm и создадим новый проект, нажав New Project.

Откроется страница с настройками проекта. Здесь выберем местоположение и виртуальную среду (в нашем случае это virtualenv, но можно и любую другую).

Также уберём флажок с пункта Create a main.py welcome script. Если его оставить, то при создании проекта PyCharm автоматически создаст файл main.py с примером кода.

Нажмём на кнопку Create и создадим проект, после чего он сразу же откроется.

Создадим Python-файл, в котором напишем свой код. Для этого в окне Project правой кнопкой мыши нажмём на корневую папку HelloWorld. Во всплывающем окне выберем New Python File.

Откроется окно, в котором введём название файла. Назовём его hello или любым другим именем, нажмём Enter.

PyCharm создаст файл, в котором и напишем наш код.

Вот мы и написали свою первую программу в PyCharm. Вы могли обратить внимание, что даже в ней PyCharm подсказывал и помогал:

  • автоматически выставлял отступы;
  • подсвечивал ошибки (например, если забыли поставить двоеточие в конце первой строки);
  • при написании функции print предложил автодополнение уже после первых двух букв;
  • проверял код на соответствие стандарту PEP 8.

Подробнее о том, как работать в PyCharm, можно прочитать в её документации.

Что в итоге

  • PyCharm — популярная среда разработки, заточенная под потребности Python-разработчиков. Она упрощает и ускоряет работу с кодом, помогает избегать багов и писать более чисто.
  • PyCharm существует в двух редакциях: Community и Professional. Community бесплатна, а Professional даёт обширный набор инструментов.
  • Community Edition будет достаточно для обучения программированию и небольших личных проектов, написанных на чистом Python.
  • Professional Edition подойдёт для крупных проектов, научной и веб-разработки.

А вообще, опытные разработчики и хакеры рекомендуют программировать в Vim. Это бесплатный редактор кода, который можно превратить в полноценную IDE с кучей полезных функций. В прошлом году у нас как раз вышел бесплатный курс по нему.

Читайте также:

  • 8 типов программ, которые упрощают жизнь разработчиков
  • «Прошёл модуль курса и начал рассылать резюме»: музыкант, который стал питонистом
  • Как установить библиотеку в Python: руководство для новичка

Руководство по стилю написания кода, принятое среди Python-разработчиков.

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

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