Pythoner
7.22K subscribers
862 photos
28 videos
4 files
657 links
Полезные материалы по Python, которые будут интересны опытному и начинающему разработчику.

Сотрудничество - @flattys
Цены - @serpent_media

Канал на бирже: https://telega.in/c/pythonercode
Download Telegram
➡️Чтобы вычислить размер какого-либо объекта, можно воспользоваться функцией sys.getsizeof(object[, default]). Поскольку Python написан в полном соответствии с парадигмой ООП, таким объектом может быть все что угодно.

Однако, следует помнить, что хотя все built-in (встроенные) объекты и вернут правильный размер, в общем случае это не должно быть верно для каких-либо пользовательских объектов.

Аргумент default позволяет определить значение, которое будет возвращено, если тип объекта не предоставляет средства для извлечения размера и вызовет TypeError.

➡️Функция getsizeof вызывает метод __sizeof__ объекта и добавляет дополнительные служебные данные сборщика мусора, если конечно объект управляется сборщиком мусора.

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥51
➡️Множеству инструментов командной строки или скриптов для работы требуется имя пользователя и пароль. Если вам придётся писать подобную программу – вы, возможно, сочтёте полезным модуль getpass.

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

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7👍42
➡️Одним из приемов для ускорения работы циклов является векторизация вычислений, т. е. использование функций, которые поддерживают операции над векторами.

🔎Вообще лучший способ ускорить любой цикл – это отказаться от него. В примере выше для работы с функцией my_func мы могли бы вызвать ее в цикле для каждого элемента списка, но гораздо проще использовать vectorize.

➡️По сути, vectorize преобразует функцию таким образом, что она начинает принимать весь вектор целиком, а не отдельный его элемент. Надо помнить, что такой подход не всегда приводит к значительному ускорению.

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥51👍1
🤣39👍6😁2
🔎ООП - это сокращение от "объектно-ориентированное программирование". Это парадигма программирования, которая использует объекты и их взаимодействие для решения задач. ООП стал широко распространенным подходом в программировании, и понимание его основных концепций может быть полезным для разработчиков.

➡️Преимущества ООП

ООП предлагает ряд преимуществ, которые делают его популярным подходом в программировании.

➡️Во-первых, ООП способствует повышению переиспользуемости кода. Разработчики могут создавать модули и классы, которые можно использовать в разных проектах.

➡️Во-вторых, ООП способствует упрощению поддержки и изменения программного кода. Если необходимо внести изменения в программу, то, в большинстве случаев, достаточно внести изменения только в одном месте - в классе или его методе.

➡️В-третьих, ООП позволяет создавать более надежные программы. Благодаря инкапсуляции и строгой организации кода, ошибки и проблемы могут быть обнаружены.

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥32
➡️Декоратор @ classmethod — это метод, который получает класс в качестве параметра, который принято обозначать как cls. Он указывает на класс ToyClass, а не на объект этого класса.

Методы класса привязаны к самому классу, а не его экземпляру. Они могут менять состояние класса, что отразится на всех объектах этого класса, но не могут менять конкретный объект.

➡️Проще говоря, @ classmethod — это обычный метод класса, имеющий доступ ко всем атрибутам класса, через который он был вызван.

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥31
🔎LoginManager - это класс во Flask, который обрабатывает аутентификацию пользователей. Он предоставляет возможность работы с аутентификацией: проверка правильности введенных учетных данных, установка и удаление сеансов пользователя, проверка доступа к защищенным страницам.

➡️Использование LoginManager

Сначала необходимо создать экземпляр LoginManager и привязать его к приложению Flask. Затем можно определить функцию загрузки пользователя с помощью декоратора @login_manager.user_loader. Эта функция должна принимать идентификатор пользователя в качестве параметра и возвращать объект пользователя.

После настройки LoginManager можно использовать его для защиты определенных страниц и контролировать доступ к ним только для аутентифицированных пользователей. Для этого можно использовать декоратор @login_required, который применяется к функции представления и автоматически проверяет статус аутентификации пользователя перед выполнением функции.

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥53👍2
➡️Один из наиболее распространенных случаев использования оператора with - работа с файлами. Он позволяет автоматически управлять открытием и закрытием файлов, что делает код более читаемым и безопасным. Рассмотрим пример:

with open("file.txt", "r") as file:
data = file.read()
print(data)


⬆️В данном примере мы открываем файл "file.txt" в режиме чтения и с помощью оператора with. После выполнения блока кода, связанного с оператором with, файл автоматически закрывается. Это особенно полезно, когда нам нужно работать с файлами, так как мы не забудем закрыть их и не получим утечку памяти.

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍83🔥1👏1
➡️Оператор with также может использоваться для работы с другими типами контекстов, такими как сетевые соединения, базы данных и другие ресурсы. Контексты являются объектами, которые могут выполнять некоторые действия перед входом в блок кода и после его выхода. Рассмотрим пример с использованием оператора with для работы с сетевым соединением:

import socket

with socket.create_connection(("example.com", 80)) as connection:
connection.sendall(b"GET / HTTP/1.1\\r\\nHost: example.com\\r\\n\\r\\n")
response = connection.recv(4096)
print(response.decode())


⬆️В данном примере мы создаем сетевое соединение с хостом http://example.com/ на порту 80. Блок кода, связанный с оператором with, выполняет отправку HTTP-запроса и получение ответа. После выполнения блока кода сетевое соединение автоматически закрывается.

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍93🔥3
🔎Если вы когда-либо работали с Python проектами, вы наверняка сталкивались с папкой venv. Но что это за папка и зачем она нужна?

➡️Папка venv - это сокращение от "виртуальная среда" (virtual environment) и представляет собой изолированное окружение Python, в котором можно устанавливать и использовать различные версии пакетов и зависимостей. Виртуальная среда позволяет изолировать проект от других проектов и иметь разные версии пакетов для разных проектов.

➡️Зачем она вообще тогда нужна?

При разработке проектов на Python часто возникает необходимость использовать различные зависимости и библиотеки. Однако, каждый проект может требовать разные версии пакетов или зависимостей. Использование общей системной установки пакетов может привести к конфликтам и несовместимости. Вот где на помощь приходит папка venv - она позволяет создать изолированную среду, в которой можно устанавливать и использовать нужные версии пакетов без влияния на системные установки.

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍126🔥2
🔎Объекты - это экземпляры классов, и классы являются шаблонами для создания объектов. Каждый объект имеет свои собственные атрибуты (переменные, данные) и методы (функции, действия), которые определяют его поведение и взаимодействие с другими объектами.

Например, если у нас есть класс "Автомобиль", мы можем создать несколько объектов этого класса, таких как "Машина1" и "Машина2". У каждого объекта будет свой набор атрибутов, таких как "марка", "модель" и методов, таких как "завести двигатель" или "передвинуться вперед".

➡️Преимущества использования объектов в Python

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

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

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍83🔥2
👍7
Что выдаст код выше
Anonymous Quiz
34%
True
30%
False
28%
Error
8%
None
👍43
Разбор

Мы рандомим букву среди строки, но среди какой?

Сначала мы берем нулевой элемент списка - это и есть наша строка. А после, мы делаем выбор по индексу 1 —> получаем строку, которая состоит из 1-ого символа, который и рандомим)

Это символ -> "1"

Проверка isnumeric чекает на то, является ли это числом —> да. Значит if сработает и выдаст True
Please open Telegram to view this post
VIEW IN TELEGRAM
👍73🔥2🤯1
🤣21👍4😁2
➡️Перед тем, как сравнивать два элемента списка к ним применялась функция prepare_item, которая меняла знак у стоимости (функция применяется ровно по одному разу к каждому элементу. В результате при одинаковом первом значении сортировка по второму происходила в обратном порядке.

➡️Чтобы не плодить утилитарные функции, вместо использования сторонней функции, того же эффекта можно добиться с использованием лямбда-функции.

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍3🔥2
➡️Функция all в Python

Функция all принимает на вход итерируемый объект (например, список) и возвращает True, если все его элементы являются истинными (или, если итерируемый объект пустой). Например:

numbers = [1, 2, 3, 4]
print(all(numbers)) # Выводит: True


⬆️В этом примере функция all вернула True, потому что все числа в списке numbers являются истинными (то есть, не равны нулю).

➡️Функция any в Python

Функция any, как и all, принимает на вход итерируемый объект, но возвращает True, если хоть один из его элементов является истинным. Если итерируемый объект пустой, функция any возвращает False. Например:

numbers = [0, 0, 1, 0]
print(any(numbers)) # Выводит: True


⬆️В этом случае функция any вернула True, потому что в списке numbers было хотя бы одно истинное значение (1).

➡️Использование all и any вместе

Функции all и any можно использовать вместе, чтобы проверить сложные условия. Например, мы можем проверить, все ли элементы в списке положительные и есть ли среди них хоть одно четное число:

numbers = [1, 2, 3, 4]
print(all(num > 0 for num in numbers) and any(num % 2 == 0 for num in numbers)) # Выводит: True

⬆️В этом примере функция all вернет True, если все числа в списке будут положительными, а функция any вернет True, если среди чисел будет хотя бы одно четное.

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5👍43
👍3
Что выдаст код выше
Anonymous Quiz
2%
Ben Big
2%
Big Ben
14%
Ben Moon
18%
Ben Big Moon
56%
Moon
7%
Error
👍63
Разбор

Я думаю, что почти все из вас работали/знают, как работать с файловой системой в Python. Фишка этой задачи в том, что сперва мы создаем файл, куда закидываем текст Ben.

Вторым этапом идет добавление (потому что буква 'a') к уже существующему слову Ben слова Big —> BenBig.

Ну а далее мы открываем опять файл на запись через 'w', что означает, что ВСЕ данные в файле будут перезаписаны. —> BenBig удалится, а Moon появится.

Как результат, при чтении мы получим просто слово Moon.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍125🔥2
➡️Открытие изображения

Первая команда, которую мы рассмотрим, это открытие изображения. С помощью функции open() из библиотеки PIL вы можете загрузить изображение из файла и сохранить его в переменную. Например, следующий код загрузит изображение с названием "image.jpg":

from PIL import Image

image = Image.open("image.jpg")


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

➡️Изменение размера изображения

Вторая команда, которую мы рассмотрим, это изменение размера изображения. Библиотека PIL предоставляет функцию resize(), которая позволяет изменять размер изображения. Например, следующий код изменит размер изображения до 500 пикселей по ширине и 300 пикселей по высоте:

resized_image = image.resize((500, 300))


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

➡️Сохранение изображения

Третья команда, которую мы рассмотрим, это сохранение изображения. После выполнения всех необходимых операций с изображением, вы можете сохранить его в файл с помощью функции save(). Например, следующий код сохранит измененное изображение в файл с названием "resized_image.jpg":

resized_image.save("resized_image.jpg")


Вы также можете указать другой формат файла, добавив соответствующее расширение к названию файла.

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥93👍2