2619
🐍 Канал о программировании на языке Python. Тематические уроки и лайфхаки. 👽 Админ - @it_dashka 🔊 Купить рекламу: https://telega.in/c/byteofpython 👉 Чат: @abyteofpython 👉 Поделиться с друзьями: @byteofpython
Яндекс открыл прием заявок в Летнюю Школу бэкенд-разработки
В Школе бэкенд-разработки учат тонкостям написания кода для высоконагруженных веб‑сервисов, навыкам эксплуатации сложных систем и новым знаниям в области бэкенда.
Ученики пройдут двухэтапное обучение: лекции онлайн и очная командная работа в одном из офисов Яндекса в Москве, Санкт-Петербурге и Екатеринбурге с оплатой билетов и проживания. Лучшие студенты пройдут второй этап в новом формате Лаборатории — пятинедельной оплачиваемой практике с задачами от команды Яндекса.
Отбор студентов состоит из трех этапов с алгоритмическими задачами уровня easy и medium-hard, а также техническим интервью по теории и алгоритмам и структурам данных. Чтобы лучше подготовиться, смотрите подборку полезных материалов.
Подавай заявку и проведи лето в Яндексе
Открытие и закрытие файла. Продолжение.
Второй передаваемый аргумент - mode устанавливает режим открытия файла в зависимости от того, что мы собираемся с ним делать. Существует 4 общих режима:
🐍 Укус питона // 💬 Чат // #теория #файлы
Открытие и закрытие файла
Чтобы начать работу с файлом, его надо открыть с помощью функции open(), которая имеет следующее формальное определение:
Первый параметр функции представляет путь к файлу. Путь файла может быть абсолютным, то есть начинаться с буквы диска, например, C://somedir/somefile.txt. Либо можно быть относительным, например, somedir/somefile.txt - в этом случае поиск файла будет идти относительно расположения запущенного скрипта Python.
🐍 Укус питона // 💬 Чат // #теория #файлы
Кортеж с неопределенным количеством элементов.
Если нам этот параметр (rest) не важен, но мы по прежнему хотим, чтобы шаблон соответствовал кортежу с неопределенным количеством элементов, мы можем использовать подшаблон *_:
🐍 Укус питона // 💬 Чат // #теория #pattern_matching #кортежи
Пропуск элементов. Продолжение.
В примере выше применяемые шаблоны соответствовали только двухэлементному кортежу. Однако также можно использовать одновременно шаблоны кортежей с разным количеством элементов:
🐍 Укус питона // 💬 Чат // #теория #pattern_matching #кортежи
Пропуск элементов.
Если нам не важен какой-то элемент кортежа, то в шаблоне вместо конкретного значния или переменной можно указать шаблон _:
🐍 Укус питона // 💬 Чат // #теория #pattern_matching #кортежи
Альтернативные значения. Продолжение.
Также можно задать альтернативные значения для отдельных элементов, но и альтернативные кортежи:
В данном случае первый шаблон будет соответствовать двум кортежам: ("Tom", 37) и ("Sam", 22).
🐍 Укус питона // 💬 Чат // #теория #pattern_matching #кортежи
Альтернативные значения.
Если необходимо, чтобы элемент кортежа соответствовал набору значений, то эти значения можно перечислить через вертикальную черту:
В данном случае первый шаблон соответствует двухэлементному кортежу, где первый элемент равен или "Tom", или "Tomas", или "Tommy".
🐍 Укус питона // 💬 Чат // #теория #pattern_matching #кортежи
Кортежи в pattern matching. Продолжение.
Второй шаблон соответствует любому двухэлементному кортежу, первый элемент которого равен строке "Tom":
Для второго элемента определяется переменная age. В итоге, если первый элемент кортежа равен строке "Tom", а второй не равен 37, то такой кортеж будет соответствовать второму шаблону. Причем второй элемент будет передаваться переменной age.
🐍 Укус питона // 💬 Чат // #теория #pattern_matching #кортежи
Pattern matching. Конструкция match. Продолжение.
Подобным образом можно сравнивать выражения с данными других типов. Например:
Здесь функция operation принимает два числа и код операции. Конструкция match сравнивает код операции с конкретными значениями и в зависимости от значения выполняет на числами определенную операцию. Например, если code равен 1, то выполняется выражение, второй пример:
это выражение case возвратит из функцию сумму чисел a и b.
Аналогично если code = 2, то возвращается разность, а если code = 3, то возвращается произведение чисел. Во всех остальных случаях возвращается 0.
🐍 Укус питона // 💬 Чат // #теория #pattern_matching #конструкции #match
Pattern matching. Конструкция match. Продолжение.
Но также можно определить блок case, который позволяет сравнивать сразу с несколькими знечениями. В этом случае значения разделяются вертикальной чертой:
В данном случае шаблон case "american english" | "british english" | "english" соответствует сразу трем значениям.
🐍 Укус питона // 💬 Чат // #теория #pattern_matching #конструкции #match
Pattern matching. Конструкция match. Продолжение.
Обратите внимание, что блоки case имеют отступы от начала конструкции match. А инструкции каждого блока case имеют отступы от начала данного блока case. Но если блок case имеет одну инстукцию, ее можно поместить на той же строке, что и оператор case:
Причем если выражение из match не соответствует ни одному из шаблонов case, то соответственно ни один из этих блоков case не выполняется.
🐍 Укус питона // 💬 Чат // #теория #pattern_matching #конструкции #match
Pattern matching. Конструкция match. Продолжение.
После ключевого слова match идет сравниваемое выражение. И затем после двоеточия на последующих строках располагаются выражения case. После каждого выражения case указывается шаблон, с которым сравнивается выражение из match. После шаблона через двоеточие указываются набор выполняемых действий блока case.
Конструкция match последовательно сравнивает выражение с шаблонами из блоков case. И если был найден шаблон из какого-нибудь блока case соответствует выражению из match, то выполняются инструкции из данного блока case.
В качестве паттернов/шаблонов, с которыми сравниваются выражения, могут применяться как данные примитивных типов, так и последовательности элементов и объектов классов.
Вначале рассмотрим ситуацию, когда в качестве шаблона выступают литералы примитивных типов. Например, в зависимости от языка выведем приветственное сообщение:
🐍 Укус питона // 💬 Чат // #теория #pattern_matching #конструкции #match
Pattern matching. Конструкция match.
Начиная с версии 3.10 в языке Python появилась такая функциональность как pattern matching (сопоставление шаблонов). Pattern matching представляет применение конструкции match, которая позволяет сопоставить выражение с некоторым шаблоном. И если выражение соответствует шаблону, то выполняются определенные действия. В этом смысле конструкция match похожа на конструкцию if/else/elif, которая выполняет определенные действия в зависимости от некоторого условия. Однако функциональность match гораздо шире - она также позволяет извлечь данные из составных типов и применить действия к различным частям объектов.
Конструкция match имеет следующее формальное определение:
🐍 Укус питона // 💬 Чат // #теория #pattern_matching #конструкции #match
Погрузитесь в мир Python с нашим бесплатным курсом!
🎓 Включено 45 уроков, 56 упражнений в тренажере и 163 проверочных теста. Узнаете, как создавать программы, работать с условиями и функциями.
Что вы освоите:
— Составление программ из нескольких модулей.
— Анализ ошибок в коде с использованием отладочной печати.
📚 Курс охватывает основы Python: синтаксис, условия, циклы, типы данных и библиотеки. Практика на каждом шаге поможет вам уверенно использовать язык.
Начните свое обучение с бесплатного базового курса Python и вы сможете создавать несложные программы, а так же анализировать ошибки в коде!
Открытие и закрытие файла. Продолжение.
Например, открытие текстового файла на запись, первый пример:
Или открытие бинарного файла на чтение, второй пример:
После завершения работы с файлом его обязательно нужно закрыть методом close(). Данный метод освободит все связанные с файлом используемые ресурсы.
Например, откроем для записи текстовый файл "hello.txt", последний пример:
🐍 Укус питона // 💬 Чат // #теория #файлы
Сколько программист может зарабатывать на фрилансе?
Вчера взял проект за 1000$ — сегодня купил здесь рекламу.
Хватит писать код бесплатно, начни монетизировать своё дело. А о том, как это сделать расскажет канал «Фриланс с Хаямом Алиевым»
Будь первым, кто познает все тонкости фриланса: /channel/+C1iWMI2pPE1hM2Ni
Работа с файлами. Открытие и закрытие файлов.
Python поддерживает множество различных типов файлов, но условно их можно разделить на два виде: текстовые и бинарные. Текстовые файлы - это к примеру файлы с расширением cvs, txt, html, в общем любые файлы, которые сохраняют информацию в текстовом виде. Бинарные файлы - это изображения, аудио и видеофайлы и т.д. В зависимости от типа файла работа с ним может немного отличаться.
При работе с файлами необходимо соблюдать некоторую последовательность операций, смотрим пример:
🐍 Укус питона // 💬 Чат // #теория #файлы
Кортеж с неопределенным количеством элементов.
Если необходимо сравнивать выражение с кортежем неопределенной длины, то можно определять все остальные значения кортежа с помощью символа * (звездочки):
В примере выше применяется параметр *rest, который соответствует всем остальным элементам. То есть в примере выше шаблоны ("Tom", 37, *rest) и (name, age, *rest) соответствуют любому кортежу с двумя элементами и больше. Все элементы начиная с третьего будут помещаться в параметр rest, который представляет массив значений.
🐍 Укус питона // 💬 Чат // #теория #pattern_matching #кортежи
Пропуск элементов. Продолжение.
Можно использовать прочерки для всех элементов кортежа, в этом случае значения всех этих элементов будут не важны:
В причем в последнем случае шаблон (_, _) по прежнему соответствует только двухэлементному кортежу
🐍 Укус питона // 💬 Чат // #теория #pattern_matching #кортежи
Вам нравится читать контент на этом канале?
Возможно, вы задумывались о том, чтобы купить на нем интеграцию?
Следуйте 3 простым шагам, чтобы сделать это:
1) Регистрируйтесь по ссылке: https://telega.in/c/byteofpython
2) Пополняйтесь удобным способом
3) Размещайте публикацию
Если тематика вашего поста подойдет нашему каналу, мы с удовольствием опубликуем его.
🔥ChatGPT теперь в телеграм!
Для всех, кто устал сёрчить Хабр, рыться в куче непроверенной информации появился канал, который ведет ChatGPT: ищет новости, связанные с IT и публикует их в сжатом виде.
❗️Не потеряй ссылку - /channel/+Tci9SwJcPlg1ZWI6
Кортежи в pattern matching. Продолжение.
Третий шаблон во многом аналогичен, только теперь строго определен второй элемент кортежа - он должен быть равен 22, а первый попадает в переменную name:
Если двухэлементный кортеж не соответствует первому, второму и третьему шаблонам, то он будет соответствовать четвертому шаблону, в которому нам не важные конкретные значения - для них определены переменные name и age:
🐍 Укус питона // 💬 Чат // #теория #pattern_matching #кортежи
Кортежи в pattern matching.
В качестве шаблонов в pathern matching в Python могут выступать кортежи. Например:
В данном случае функция принимает параметр user, который, как предполагается, представляет кортеж из двух элементов. И конструкция match сравнивает этот кортеж с рядом шаблонов. Первый шаблон предполагает, что кортеж user точно соответствует набору значений, вторая маленькая часть кода:
То есть, если первый элемент кортежа равен "Tom", а второй - 37, то на консоль выводится строка "default user"
🐍 Укус питона // 💬 Чат // #теория #pattern_matching #кортежи
💎 PyLinux - канал для Python программистов и фанов Linux.
👉 Там ты найдешь:
- библиотеки и скрипты Python
- инструменты и лучшие практики Linux
- полезный софт
- важнейшие новости из мира IT
💪 Заходи и прокачивай свои скиллы вместе с PyLinux!
Pattern matching. Конструкция match. Продолжение.
Если необходимо, чтобы при несовпадении значений (если ни один из шаблонов case не соответствует выражению match) выполнялись некоторые действия по умолчанию, то в этом случае применяется шаблон _ (прочерк):
Если ни один из шаблонов case не соответствует значению language, то будет выполняться блок, второй пример:
🐍 Укус питона // 💬 Чат // #теория #pattern_matching #конструкции #match
Pattern matching. Конструкция match. Продолжение.
Здесь функция print_hello принимает параметр language, через который передается выбранный язык. В самой функции конструкция match сравнивает значение переменной language. В блоках case определяются шаблоны - строки, с которыми сопоставляется переменная language.
Например при вызове print_hello("english") параметр language равен "english", поэтому конструкция match выберет следующий блок case:
🐍 Укус питона // 💬 Чат // #теория #pattern_matching #конструкции #match
👩💻 Как работать с паттернами проектирования в Python?
Расскажет Станислав Ступников — руководитель разработки в VK.
Встречаемся на бесплатном практическом уроке от OTUS, где мы:
▫️займемся классификацией паттернов;
▫️покажем, насколько хорошо и ровно они транслируются в мир Python-разработки;
▫️ обсудим, как с ними работать.
📢 Занятие пройдёт 28 февраля в 20:00 мск и будет приурочено к старту курса «Python Developer. Professional». Доступна рассрочка на обучение!
⬇️ Пройдите короткий тест прямо сейчас, чтобы занять место на открытом уроке и получить запись: пройти тест
Форматирование без метода format.
Существует также еще один способ форматирования с помощью следующего синтаксиса, первый пример:
То есть в начале идет строка, которая содержит те же плейсхолдеры, которые были рассмотрены выше (за исключением плейсхолдера %), после строки ставится знак процента %, а затем список значений, которые вставляются в строку. Фактически знак процента представляют операцию, в результате которой образуется новая строка, второй пример:
Рядом с плейсхолдером указывается знак процента и в отличие от функции format здесь не требуются фигурные скобки.
Причем способы форматирования чисел здесь также применяются:
🐍 Укус питона // 💬 Чат // #теория #строки #форматирование
Подстановки. Продолжение.
Плейсхолдеры можно использовать и в f-строках, смотрим пример:
Для дробных чисел, то есть таких, которые представляют тип float, перед кодом плейсхолдера после точки можно указать, сколько знаков в дробной части мы хотим вывести, второй пример:
Еще один параметр позволяет установить минимальную ширину форматируемого значения в символах, третий пример:
🐍 Укус питона // 💬 Чат // #теория #строки #форматирование