Сообщество - Программирование на python

Программирование на python

698 постов 11 879 подписчиков

Популярные теги в сообществе:

ГЛАВА 1. Начало пути

Привет, Пикабушники!

В настоящий момент я работаю в области 1С, уже как 9 лет, за это время достиг неплохих результатов, получаю ЗП от 200 тысяч в регионе и являюсь руководителем IT отдела в одном из франчей.

Но последние года два от 1С начало понемногу тошнить, и в голове начали появляться мысли, что надо попробовать что-то новое. Идей было много, но подумав, что интересно, решил, что буду переквалифицироваться на python (пайтон) программиста.

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

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

Первым делом решил написать бота для скачивания видео из ютуба и тиктока (youtube, tiktok). В принципе в интернете много информации о том, как сделать нечто похожее, я использовал в своем проекте следующие библиотеки: pyrogram, youtube_dl, tiktok_downloader. Базу данных решил выбрать MySQL, вначале правда хотел попробовать на MSSQL (так как есть опыт работы именно с ней и она стояла на сервере, где я занимаюсь разработкой), но она для работы с пайтоном я так понял не пользуется большой популярностью.

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

Если кому будет интересно воспользоваться или попробовать сломать бота, то вот его ник в телеграмме @vidfetcher_bot,.

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

П.с. вчера решил написать о своем боте на пикабу и попросил ЧатГПТ сделать текст, так это получился такой кринж, за какой словил бан за 5 минут >_< , но пообщавшись с ТП они пошли на встречу и простили меня на первый раз.

Показать полностью

Хочу спросить совета у бывалых питонистов

Посмотрел я тут давеча видос:

Если кратко, чувак рекомендует учиться на реальной задаче, которая нужна именно тебе самому и под эту задачу искать решение.

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

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

Что мне нужно? Я занимаюсь языковыми переводами документов. Часто это шаблонные документы типа паспорта - шаблон есть, надо просто вписать имя, фамилию, отчество, дату рождения, место рождения, серию паспорта и иногда заполнить ещё одну-две графы. Вроде работа простая и перевод одного паспорта занимает минут 5 всего, но лично меня очень раздражает вручную тыкать курсором в нужное место, чтобы там заменить значения.

Как я вижу решение? Это какая-то программа, которую открываю на компе, выбираю нужный шаблон, и вбиваю данные в графы, между которыми переключаюсь просто нажатием клавиши Enter. Не нужно использовать мышку. В некоторых графах возможен вариант выбора из нескольких возможных вариантов (например, фамилия чиновника, выдавшего паспорт).

Далее после заполнения этого шаблона очень желательно, чтобы документ можно было сохранить в форматах doc, pdf. Клавиша отправки на печать прямо из программы была бы полезна.

Теперь о моих скиллах: их немного. 6-й месяц учусь на курсе «Python-разработчик» на Яндекс Практикуме, понимаю там мало (учёба даётся непросто) параллельно прохожу бесплатные курсы на Степике: Инди-курс программирования на Python и Поколение Python для начинающих.

Нужен совет: какие технологии мне следует изучить, чтобы реализовать этот проект на питоне?

Показать полностью

List, Tuple и как передаются аргументы

На вопрос "В чём разница между list и tuple" нейросеть выдала:

"Тип списка представляет собой структуру данных последовательности, где каждый элемент может быть доступен независимо от других. Тип кортежа — это набор связанных элементов, которые упорядочены, и все они должны быть доступны вместе как группа. Списки являются динамическими, увеличиваются и уменьшаются по мере необходимости, а кортежи имеют фиксированный размер."

Как всегда, не совсем то, что хотелось бы.

У списка есть свойство mutability - он может быть изменен, то есть любой его элемент можно заменить на другой. Кортеж (tuple) является иммутабельным типом данных, его содержимое можно изменить только присвоив ему новую последовательность элементов, но никак не получится изменить только N-й элемент.

>>> a = (1,2,3)

>>> a[1]

2

>>> a[1] = 5

TypeError: 'tuple' object does not support item assignment

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

Итак, mutable - это: dict, set, list, byte array. Immutable - это: int, float, complex, string, tuple, frozen set, bytes.

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

Приведу правдоподобный пример:

def updateList(list1):

‧‧‧‧list1 += [10]

n = [5, 6]

updateList(n)

print(n) # [5, 6, 10]

В этом примере мы видим, что mutable список n был передан функции по ссылке (call by reference, часто пишут byRef) и она может изменять содержимое списка.

def updateNumber(n):

‧‧‧‧n += 10

b = 5

updateNumber(b)

print(b) # 5

А здесь b является immutable объектом, и передан по значению (5). Внутри функции updateNumber оно будет увеличено, но это не приведет к изменению переменной b. Это "pass by value", или byVal.

Такой ответ можно найти в интернете, но это неправда!

А правильный ответ такой:
=========================

Python passes references-to-objects by value (like Java), and everything in Python is an object. This sounds simple, but then you will notice that some data types seem to exhibit pass-by-value characteristics, while others seem to act like pass-by-reference... what's the deal?

It is important to understand mutable and immutable objects. Some objects, like strings, tuples, and numbers, are immutable. Altering them inside a function/method will create a new instance and the original instance outside the function/method is not changed. Other objects, like lists and dictionaries are mutable, which means you can change the object in-place. Therefore, altering an object inside a function/method will also change the original object outside.

И у нас выходит, что передаются ссылки на объекты по их, ссылок, значению. И если объект immutable, то при его изменении создаётся копия объекта, которая и изменяется внутри функции/метода.

Проверим!

def updateNumber(n):

‧‧‧‧print(id(n)) # 3151030976880

‧‧‧‧n += 10

‧‧‧‧print(id(n)) # 3151030977200 <--- id изменился

b = 5

print(id(b)) # 3151030976880

updateNumber(b) # 3151030976880

print(b) # 5

id - это идентификатор объекта, и он изменился. То есть, теперь у нас есть "локальная копия" переданного объекта внутри функции.

Не каждый интервьюер сам ответит на этот вопрос правильно. Это почти "квантовое" и совсем неявное копирование ведет к заблуждению, что разные типы объектов где-то там, "под капотом", передаются в функцию/метод по-разному.

На самом же деле, передаются они одинаково, но вот объекты ведут себя по-разному.

Это кросспост из моего Telegram-канала "Не Ван Россум", где я прямо сейчас пишу сериал "101 вопрос про Python" с описанием подводных камней, неочевидностей и загвоздок.

Показать полностью

О docstring-ах

Ещё один синтаксический сахар, задающий атрибут класса.

Что забавно, "explicit is better than implicit", но "beautiful is better than ugly". По сути, тройные кавычки просто устанавливают содержимое атрибута doc, который можно и переопределить.

Более того, docstring вовсе не обязательно является строкой - ничто не мешает сделать этот атрибут числовым или другого типа.

class Some:

‧‧‧‧""" This is Some class doc"""

‧‧‧‧__doc__ = "This is Some class doc***"

‧‧‧‧def any():

‧‧‧‧‧‧‧‧"""This is Some.any doc"""

‧‧‧‧‧‧‧‧...

print(Some.__doc__)

print(Some.any.__doc__)


> This is Some class doc***

> This is Some.any doc


instance = Some()

instance.__doc__ = 123456.78

print(instance.__doc__, type(instance.__doc__))


> 123456.78 <class 'float'>

От себя добавлю, что докстринги в реальном коде я встречал (и сам использую) скорее в качестве комментариев с кратким описанием "что делает этот класс", чем в качестве действительно полезной документации. Тем более, что в режиме REPL (интерактивной консоли) работать приходится совсем не часто.

Это кросспост из моего Telegram-канала "Не Ван Россум", где я прямо сейчас пишу сериал "101 вопрос про Python" с описанием подводных камней, неочевидностей и загвоздок.

p.s. Пока не придумал, как правильно изображать столь важное в Python форматирование табуляцией. Пробую символы "‧", посмотрим что получится при публикации.

Показать полностью

Простыми словами о программировании. Видео 6. Типы данных

Всем привет! Это 6ое видео курса, где будет рассказано о том как программы работают с различными видами информации. Разберем это на примере музыки.

Небольшое отступление. Пока это последнее из сделанных видео. К сожалению новое будет очень нескоро. Поэтому я повторю то, что говорил в самом первом видео. Если у вас самостоятельно получается повторять программы из уроков, то не бойтесь самостоятельно продолжать изучать программирование. Ни в коем случае не покупайте модные дорогие курсы, вы все равно не сможете освоить весь тот объем знаний, что там будет даваться. Лучше поищите хорошую книгу, бесплатный курс или в крайнем случае скачайте платный курс с торрентов ;-) Если же все происходящее в моих уроках вам кажется сложным, то лучше подумайте о другой профессии. Благо их тоже немало.

В общем, удачи вам и хороших праздников!

Краткая рецензия на книгу "Python к вершинам мастерства"

Книга "Python к вершинам мастерства" - это практическое руководство для тех, кто хочет достичь профессионального уровня в программировании на языке Python. Автор Лучано Рамальо раскрывает возможности языка Python, демонстрируя, как написать эффективный идиоматичный код, используя все его возможности. Книга содержит глубокое исследование модели данных в Python, структур данных, функций, объектно-ориентированных идиом, управления потоком выполнения и метапрограммирования. Идеально подходит как для аналитиков, только начинающих осваивать обработку данных, так и для опытных программистов на Python, еще не знакомых с научными приложениями. Это практическое пособие поможет вам научиться писать эффективный, более короткий и понятный код на языке Python, за короткое время.

Скачать книгу бесплатно

Задачи по Python для начинающих

  1. Создайте программу на Python, который принимает символы от пользователя и переворачивает его. Например, если пользователь напишет: 12345, то выведет 54321

  2. Напишите программу на Python, которые проверяет выполнимость условие при написании пароля. Те самые условии: Минимум 8 символов, максимум 16 символов, минимум 1 число.

  3. Напишите программу, которая меняет местами элементы в массиве

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

  5. Напишите программу, которая отображает дату и время, год, месяц года, и день недели

Написал: Основатель тг канала с книгами по Python

Ответ на пост «Топ 5 бесплатных курсов по Python для начинающих»1

При каждом удобном случае всем рассказываю про курсы JetBrains Academy он же hyperskills.org

Именно по питону там два курса - начальный и core. Они как матрёшка вложены первый во второй.

Кроме того там же есть отдельные курсы по фреймворкам типа Django, Flask... 10 курсов в сумме https://hyperskill.org/tracks?category=1

Чем хорош jba?

- во-первых это по сути тот же степик. Модуль+ задачи в виде тестов или редактора кода с автопроверкой. То есть те кто прошел хотя бы 10 задачек на степике в интерфейсе разберутся

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

- 3. Линейное прохождение материала заменено на проекты. Каждый проект предполагает прохождение определенного количества уроков и применение этих уроков на практике. В среднем проекты первого- второго уровня сложности не превосходят 200 строк кода.

- 4. Платформа мягко но настойчиво просит повторять пройденный материал через решение задачек. На степике такой фичи не встречал.

-5. Материал на английском. Практика и подготовка к реальной жизни.

-6. Все курсы и модули имеют размер в часах и похоже пересчитывыются под индивидуальную скорость

-7 комментарии и подсказки существенно лучше оных на курсах степика. Возможно дело в модерации

-8 есть интеграция с ide (pycharm)

Из минусов (для кого-то)

- только английский (надо попробовать под браузерным переводчиком, но мне лень)

- нет видосов

- некоторые модули скучны

- базовое алгоритмическое программирование out of scope. Впрочем достойных курсов именно по дизайну алгоритмов вообще не попадалось

- платный доступ в РФ закрыт. Бесплатный доступ - триал - три месяца по инвайту

Не то чтобы я перепробовал все возможные варианты обучения, но это точно лучше что мне попадалось для индивидуального обучения

Показать полностью
Отличная работа, все прочитано!