Совет по Python💡
Скрывайте детали реализации внутри методов "protected"/"private".
Плюсы:
- проще рефакторинг -> ничто вне модуля/класса не должно зависеть от этих методов
- простой публичный интерфейс - более простое использование, меньше риска сделать только частичную работу
👉@BookPython
Скрывайте детали реализации внутри методов "protected"/"private".
Плюсы:
- проще рефакторинг -> ничто вне модуля/класса не должно зависеть от этих методов
- простой публичный интерфейс - более простое использование, меньше риска сделать только частичную работу
👉@BookPython
👍4
Совет Python💡
Используйте инжекцию зависимостей - инжектируйте объекты, которые взаимодействуют с внешним миром (например, БД, сторонние API, ...).
Плюсы:
- более легкое и быстрое тестирование бизнес-логики -> легкая замена зависимостей на mocks/stubs/in-memory реализации
👉@BookPython
Используйте инжекцию зависимостей - инжектируйте объекты, которые взаимодействуют с внешним миром (например, БД, сторонние API, ...).
Плюсы:
- более легкое и быстрое тестирование бизнес-логики -> легкая замена зависимостей на mocks/stubs/in-memory реализации
👉@BookPython
👍5❤1🫡1
Ускоряем анализ данных в 170 000 раз с помощью Python
В статье «Ускоряем анализ данных в 180 000 раз с помощью Rust» показано, как неоптимизированный код на Python, после переписывания и оптимизации на Rust, ускоряется в 180 000 раз. Автор отмечает: «есть множество способов сделать код на Python быстрее, но смысл этого поста не в том, чтобы сравнить высокооптимизированный Python с высокооптимизированным Rust. Смысл в том, чтобы сравнить "стандартный-Jupyter-notebook" Python с высокооптимизированным Rust».
Возникает вопрос: какого ускорения мы могли бы достичь, если бы остановились на Python?
https://habr.com/ru/companies/ncloudtech/articles/790370/
👉@BookPython
В статье «Ускоряем анализ данных в 180 000 раз с помощью Rust» показано, как неоптимизированный код на Python, после переписывания и оптимизации на Rust, ускоряется в 180 000 раз. Автор отмечает: «есть множество способов сделать код на Python быстрее, но смысл этого поста не в том, чтобы сравнить высокооптимизированный Python с высокооптимизированным Rust. Смысл в том, чтобы сравнить "стандартный-Jupyter-notebook" Python с высокооптимизированным Rust».
Возникает вопрос: какого ускорения мы могли бы достичь, если бы остановились на Python?
https://habr.com/ru/companies/ncloudtech/articles/790370/
👉@BookPython
👍4
ASCII-арты на python
Здравствуйте уважаемые читатели, в этой статье я расскажу Вам как делать ASCII-арты при помощи языка python, на примере моего кода.
https://habr.com/ru/articles/790318/
👉@BookPython
Здравствуйте уважаемые читатели, в этой статье я расскажу Вам как делать ASCII-арты при помощи языка python, на примере моего кода.
https://habr.com/ru/articles/790318/
👉@BookPython
👍7
Управляем звуком ПК от активности пользователя с помощью Python
Прочитав много статей про "распознавание лиц всего за n-ое количество строк" (например: раз, два, или даже видео), я решил повторить данные эксперименты, но уже под свою задачу. А задача очень простая - если пользователь работает за ПК (сидит перед веб-камерой, управляет мышкой), то системная громкость равна 50%, иначе если он отошёл/бездействует - выставляем 100%, чтобы не пропустить все уведомления с ПК.
Данная статья выходит в виде руководства, потому что во время разработки у меня возникло много вопросов. Поэтому данный материал очень поможет новичкам (особенно для пользователей Windows), а программистам с опытом предлагаю в комментариях присоединиться к обсуждению - как сделали бы вы и что можно улучшить по вашему мнению.
https://habr.com/ru/articles/563124/
👉@BookPython
Прочитав много статей про "распознавание лиц всего за n-ое количество строк" (например: раз, два, или даже видео), я решил повторить данные эксперименты, но уже под свою задачу. А задача очень простая - если пользователь работает за ПК (сидит перед веб-камерой, управляет мышкой), то системная громкость равна 50%, иначе если он отошёл/бездействует - выставляем 100%, чтобы не пропустить все уведомления с ПК.
Данная статья выходит в виде руководства, потому что во время разработки у меня возникло много вопросов. Поэтому данный материал очень поможет новичкам (особенно для пользователей Windows), а программистам с опытом предлагаю в комментариях присоединиться к обсуждению - как сделали бы вы и что можно улучшить по вашему мнению.
https://habr.com/ru/articles/563124/
👉@BookPython
👍3😢1🤮1
Как правильно записать данные в файл? Что может пойти не так в ином случае?
Когда вы используете инструкцию open без контекстного менеджера и перед закрытием файла возникает какое-либо исключение, могут возникнуть проблемы с памятью. В таком случае файл будет повреждён.
Если вы используете инструкцию
👉@BookPython
Когда вы используете инструкцию open без контекстного менеджера и перед закрытием файла возникает какое-либо исключение, могут возникнуть проблемы с памятью. В таком случае файл будет повреждён.
Если вы используете инструкцию
with
для открытия файла и возникает проблема, Python гарантирует, что файл будет корректно закрыт.👉@BookPython
👍7❤1🥱1
9 вещей, которые показывают, что вы не являетесь профессиональным разработчиком Python
В этой статье вы узнаете, как исправить вредные привычки, которые вы закрепили с годами или принесли из других языков программирования.
https://python.plainenglish.io/9-things-you-do-that-show-you-are-not-a-python-professional-b8e0681af9e3
👉@BookPython
В этой статье вы узнаете, как исправить вредные привычки, которые вы закрепили с годами или принесли из других языков программирования.
https://python.plainenglish.io/9-things-you-do-that-show-you-are-not-a-python-professional-b8e0681af9e3
👉@BookPython
👍3👎1
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
CS50 "Введение в программирование на Python" (CS50P)
0 - Functions, Variables
1 - Conditionals
2 - Loops
3 - Exceptions
4 - Libraries
5 - Unit Tests
6 - File I/O
7 - Regular Expressions
8 - Object-Oriented Programming
9 - Et Cetera
источник
👉@BookPython
0 - Functions, Variables
1 - Conditionals
2 - Loops
3 - Exceptions
4 - Libraries
5 - Unit Tests
6 - File I/O
7 - Regular Expressions
8 - Object-Oriented Programming
9 - Et Cetera
источник
👉@BookPython
👍6👎1
Продвинутый Python: оператор dot
Казалось бы, что может быть тривиальнее оператора dot? Большинство из вас многократно пользовались этим оператором, не задаваясь вопросом, как именно он действует. Этот оператор очень удобен для решения повседневных задач. Вы обращаетесь к нему практически каждый раз, когда используете Python для чего-то большего, чем “Hello World”. Именно поэтому вам наверняка хочется копнуть глубже, и я готов стать вашим гидом.
https://towardsdatascience.com/advanced-python-dot-operator-809d0eb5d841
👉@BookPython
Казалось бы, что может быть тривиальнее оператора dot? Большинство из вас многократно пользовались этим оператором, не задаваясь вопросом, как именно он действует. Этот оператор очень удобен для решения повседневных задач. Вы обращаетесь к нему практически каждый раз, когда используете Python для чего-то большего, чем “Hello World”. Именно поэтому вам наверняка хочется копнуть глубже, и я готов стать вашим гидом.
https://towardsdatascience.com/advanced-python-dot-operator-809d0eb5d841
👉@BookPython
👍3
Бот для телеграмма, использующий Яндекс.Диск
О том как я делал бота, который файлы с яндекс диска показывает, для лично-производственных целей.
https://habr.com/ru/articles/720130/
👉@BookPython
О том как я делал бота, который файлы с яндекс диска показывает, для лично-производственных целей.
https://habr.com/ru/articles/720130/
👉@BookPython
🔥4👍2
Самый встречаемый символ в строке
Наиболее рекомендуемый метод, который можно использовать для поиска всех вхождений, — это комбинировать
Мы находим максимально встречающийся символ, используя
👉@BookPython
Наиболее рекомендуемый метод, который можно использовать для поиска всех вхождений, — это комбинировать
collections.Counter() + max()
, он фактически получает частоту всех элементов, а также может использоваться для печати частоты одного элемента, если это необходимо.Мы находим максимально встречающийся символ, используя
max()
для значений.👉@BookPython
👍2
Пишем на Python, как будто это Rust
Я начал программировать Rust несколько лет назад, и эта работа постепенно позволила мне изменить подход к проектированию программ и на других языках. В особенности заметен этот эффект был на Python. Прежде, чем я приступил к использованию Rust, я обычно писал код Python в очень динамичном стиле со свободной типизацией, без подсказок типов. Я повсюду передавал и возвращал словари, от случая к случаю прибегая к интерфейсам со “строковой типизацией ”. Правда, ощутив на себе всю строгость системы типов Rust и познакомившись со всеми теми проблемами, которые Rust решает «по природе», я вдруг сильно разволновался, когда пришлось вернуться к Python, и оказалось, что там и близко нет таких гарантий, как в Rust.
Честно говоря, под «гарантиями» я здесь подразумеваю не безопасность работы с памятью (в Python безопасность памяти обеспечивается вполне неплохо), а скорее «разумность» — такой подход к проектированию API, при котором ими становится очень сложно или просто невозможно злоупотреблять. Так предотвращаются неопределённые поведения и всевозможные баги. Если в Rust некорректно использован интерфейс, это почти всегда приводит к ошибке компиляции. В Python выполнить такую некорректную программу, тем не менее, удаётся. Но если вы пользуетесь инструментом проверки типов (например, pyright) или IDE с анализатором типов (например, PyCharm), то также можете с сопоставимой скоростью получать обратную связь о возможных проблемах.
https://habr.com/ru/articles/738432/
👉@BookPython
Я начал программировать Rust несколько лет назад, и эта работа постепенно позволила мне изменить подход к проектированию программ и на других языках. В особенности заметен этот эффект был на Python. Прежде, чем я приступил к использованию Rust, я обычно писал код Python в очень динамичном стиле со свободной типизацией, без подсказок типов. Я повсюду передавал и возвращал словари, от случая к случаю прибегая к интерфейсам со “строковой типизацией ”. Правда, ощутив на себе всю строгость системы типов Rust и познакомившись со всеми теми проблемами, которые Rust решает «по природе», я вдруг сильно разволновался, когда пришлось вернуться к Python, и оказалось, что там и близко нет таких гарантий, как в Rust.
Честно говоря, под «гарантиями» я здесь подразумеваю не безопасность работы с памятью (в Python безопасность памяти обеспечивается вполне неплохо), а скорее «разумность» — такой подход к проектированию API, при котором ими становится очень сложно или просто невозможно злоупотреблять. Так предотвращаются неопределённые поведения и всевозможные баги. Если в Rust некорректно использован интерфейс, это почти всегда приводит к ошибке компиляции. В Python выполнить такую некорректную программу, тем не менее, удаётся. Но если вы пользуетесь инструментом проверки типов (например, pyright) или IDE с анализатором типов (например, PyCharm), то также можете с сопоставимой скоростью получать обратную связь о возможных проблемах.
https://habr.com/ru/articles/738432/
👉@BookPython
👍2