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

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

Канал на бирже: https://telega.in/c/pythonercode
Download Telegram
✈️Robyn — это современный веб-фреймворк для языка программирования Python, который ориентирован на разработку высокопроизводительных и масштабируемых приложений. Этот фреймворк, предназначенный для упрощения написания асинхронного кода.

➡️Основные возможности Robyn

— Удобные декораторы и функции для создания асинхронных задач и работы с ними (например, rob, task, run).

— Инструменты для организации параллельного выполнения задач (decorators like parallel, chunks).

— Интеграция с asyncio для использования асинхронных библиотек.

— Удобные классы и функции для работы с очередями задач (Queue, run_every).

— Встроенные инструменты логирования и отладки.

— Поддержка типизации с помощью typing.

➡️Для кого?

Robyn будет полезен тем кто использует в своих приложения большое количество внешних API и тем кто ищет новый способ для оптимизации уже существующих веб-приложений. Т. к. он отлично подходит для проектирования микросервисной архитектуры и обработки событий в реальном времени.

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥95👍4
22🤣12🔥6👍2
✈️В Python есть несколько полезных констант в пакете string, которые нужно знать начинающему программисту.

➡️Основной список

string.ascii_letters: строка со всеми буквами английского алфавита (строчными и прописными).
string.digits: строка со всеми цифрами.
string.hexdigits: строка со всеми шестнадцатеричными цифрами.
string.octdigits: строка со всеми восьмеричными цифрами.
string.punctuation: строка со всеми знаками пунктуации.
string.whitespace: строка со всеми пробельными символами.

➡️Пример использования

import string

def is_alpha(s):
return all(char in string.ascii_letters for char in s)

print(is_alpha("HelloWorld")) # True
print(is_alpha("Hello World!")) # False


➡️Эти константы позволяют легко получить строки с определенными наборами символов, что часто бывает полезно при работе со строками.

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍146🔥5
✈️Датаклассы - это удобный способ создавать классы для хранения информации. Они позволяют делать это с минимальным количеством кода. Например, если вы хотите хранить информацию о точке в трехмерном пространстве, вам не нужно писать много кода для создания класса и методов. Просто используйте dataclass, и Python сделает всю работу за вас.

➡️ Вот как это работает:

from dataclasses import dataclass

@dataclass
class Point:
x: float
y: float
z: float

point = Point(1.5, 2.0, -3.7)

print(point) # Вывод: Point(x=1.5, y=2.0, z=-3.7)
print(point.x) # Вывод: 1.5
print(point.y) # Вывод: 2.0
print(point.z) # Вывод: -3.7


➡️Использование dataclasses позволяет существенно экономить время разработчика за счет избежания необходимости создавать множество методов для работы с данными, что делает код более чистым и понятным, повышая его читаемость. Благодаря этому, процесс понимания и поддержки кода становится более простым.

➡️Кроме того, dataclasses легко интегрируются с другими библиотеками и инструментами Python, что обеспечивает удобство в разработке и совместимость с другими компонентами проекта.

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍126🔥3
✈️Сортировка слиянием - это один из наиболее эффективных алгоритмов сортировки, который используется в программировании. Он основан на принципе "разделяй и властвуй", что позволяет ему достичь быстрого времени выполнения.

➡️Принцип работы

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

➡️Реализация в Python

В Python сортировка слиянием может быть реализована с помощью стандартной библиотеки. Функция merge_sort принимает список в качестве аргумента и возвращает отсортированный список. Она делит список на две половины, рекурсивно вызывает себя для каждой половины, а затем объединяет два отсортированных списка в один.

def merge_sort(arr):
if len(arr) <= 1:
return arr
mid = len(arr) // 2
left_half = merge_sort(arr[:mid])
right_half = merge_sort(arr[mid:])
return merge(left_half, right_half)

def merge(left, right):
merged = []
left_index = 0
right_index = 0
while left_index < len(left) and right_index < len(right):
if left[left_index] <= right[right_index]:
merged.append(left[left_index])
left_index += 1
else:
merged.append(right[right_index])
right_index += 1
merged += left[left_index:]
merged += right[right_index:]
return merged


➡️Преимущества и недостатки

Сортировка слиянием имеет несколько ключевых преимуществ. Во-первых, она эффективна, с временем выполнения O(n log n). Во-вторых, она стабильна, что означает, что она сохраняет исходный порядок равных элементов. Однако у нее есть и недостатки. Она требует дополнительное пространство для хранения промежуточных результатов, что может быть проблемой для больших данных.

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍85🔥1
Forwarded from IT memer
😁23🤣113🔥3👍2
✈️Одной из наиболее часто используемых функций для генерации случайных чисел является функция random.randint(). Но насколько случайными являются числа, которые генерирует эта функция?

➡️Рандомен ли random.randint?

С точки зрения программирования, идеальной случайности не существует. Даже функция random.randint() в Python генерирует так называемые псевдослучайные числа. Это значит, что хотя числа кажутся случайными, они на самом деле генерируются с использованием определенного алгоритма, который может повторяться при определенных условиях.

➡️Как работает random.randint?

Функция random.randint() использует алгоритм Мерсенна Твистер, который является одним из наиболее широко используемых алгоритмов для генерации псевдослучайных чисел. Он основан на математических принципах и генерирует последовательности чисел, которые в действительности предсказуемы, если известно достаточно много предыдущих чисел в последовательности.

➡️Влияет ли seed на random.randint?

Значение seed играет важную роль в генерации псевдослучайных чисел в Python. Если вы используете функцию random.seed() с определенным значением перед вызовом random.randint(), вы будете получать одну и ту же последовательность "случайных" чисел каждый раз, когда вы запускаете свой код. Это может быть полезно для отладки и воспроизводимости результатов.

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
7👍7🔥2
✈️В мире программирования на Python, одна из важнейших концепций, которую необходимо понять, это создание копий объектов. Это особенно полезно, когда вы не хотите изменять первоначальный объект, но вам нужно внести изменения в его копию.

➡️Поверхностное и глубокое копирование

Существуют два типа копирования в Python - поверхностное и глубокое. Поверхностное копирование создает новый объект, но заполняет его ссылками на оригинальные дочерние объекты. Глубокое копирование, с другой стороны, создает новый объект и рекурсивно добавляет копии дочерних объектов оригинала. Выбор между этими двумя зависит от ваших конкретных потребностей.

➡️Избегание неожиданных побочных эффектов

Когда вы работаете с изменяемыми объектами, такими как списки или словари, изменение копии может повлиять на оригинал. Это может привести к неожиданным побочным эффектам в вашем коде. Создание копии объекта позволяет вам вносить изменения без воздействия на оригинальный объект.

➡️Повышение производительности кода

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

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍76🔥1
✈️Модуль timeit в Python используется для измерения времени выполнения вашего кода. У него есть как интерфейс командной строки, так и вызываемый интерфейс. Модуль выполнит оператор определенное количество раз (по умолчанию - один миллион) и затем вернет время, затраченное на выполнение. Вот простой пример:

import timeit
print(timeit.timeit('"-".join(str(n) for n in range(100))', number=10000))


⬆️Этот код выполнит оператор "-".join(str(n) for n in range(100)) 10 000 раз и выведет затраченное на это время.

➡️Использование Timeit с функциями

Вы также можете использовать модуль timeit для измерения времени выполнения функций. Вот пример:

import timeit
def my_function():
return "-".join(str(n) for n in range(100))
print(timeit.timeit(my_function, number=10000))


⬆️В этом примере мы сначала определяем функцию с именем my_function. Затем мы измеряем время выполнения этой функции 10 000 раз и выводим результат.

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍4🔥2
🕔Один из самых простых способов измерения времени выполнения кода в Python – использование модуля time. Этот модуль предоставляет функцию time(), которая возвращает текущее время в секундах с момента начала эпохи. Вы можете использовать эту функцию до и после куска кода, скорость выполнения которого вы хотите измерить, а затем вычесть одно значение из другого, чтобы получить общее время выполнения.

➡️Пример использования модуля time:

import time

start_time = time.time()

# Код, скорость выполнения которого вы хотите измерить
for i in range(0, 10000):
pass

end_time = time.time()

execution_time = end_time - start_time
print(f"Время выполнения: {execution_time} секунд")


🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍104🔥2
➡️Символ новой строки в Python

В Python символ новой строки представлен как '\n'. Он используется для обозначения конца строки текста и начала новой. Когда интерпретатор Python встречает символ новой строки в строке, он понимает, что нужно перенести строку и начать новую. Например:

print("Привет\nМир")


⬆️Этот код напечатает:

Привет
Мир


Это происходит потому, что символ '\n' сигнализирует интерпретатору о начале новой строки после печати "Привет".

➡️Другие специальные символы в Python

Помимо символа новой строки, Python также поддерживает различные другие специальные символы, которые часто используются с оператором print для форматирования вывода. Например, символ '\t' представляет собой табуляцию, создающую большое пространство в выводе.

print("Привет\tМир")


⬆️Этот код напечатает:

Привет   Мир


➡️Экранированные последовательности в Python

Экранированные последовательности в Python начинаются с обратной косой черты (\) и следуют за символом, который вы хотите вставить. Python интерпретирует экранированную последовательность как один символ. Помимо '\n', '\t', в Python есть несколько других экранированных последовательностей, таких как \' для одинарной кавычки, \" для двойной кавычки и \\ для самой обратной косой черты.

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍95🔥31
Forwarded from IT memer
🤣25😁9👍4😡1
👍62
Что выдаст код выше
Anonymous Quiz
68%
True
13%
False
6%
None
14%
Error
👍6😁42🔥2🤬2
Разбор

Простая проверка, есть ли список в списке со списками. Да, такой список там есть. 😊
Please open Telegram to view this post
VIEW IN TELEGRAM
👍117🤬2👏1
➡️Что такое cProfile?

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

➡️Как использовать cProfile?

Использование cProfile довольно просто. Вы просто импортируете модуль и вызываете функцию cProfile.run(), передавая ей строку кода, который вы хотите проанализировать. Вы также можете использовать cProfile в качестве командной строки, передав ему имя файла Python, который вы хотите профилировать. Результаты профилирования могут быть отсортированы по различным критериям, таким как общее время выполнения, время выполнения на вызов и количество вызовов.

➡️Пример использования cProfile:

import cProfile

def sum_of_numbers():
return sum(range(100000))

cProfile.run('sum_of_numbers()')


⬆️В этом примере мы профилируем функцию sum_of_numbers, которая суммирует числа от 0 до 100000.

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍114🔥4
➡️Установка модуля requests

Первым шагом является установка модуля requests, если он еще не установлен. Он является одним из основных модулей Python, которые используются для отправки HTTP-запросов. Вы можете установить его, используя pip: pip install requests.

➡️Скачивание файла

Скачивание файла с помощью requests довольно прямолинейно. Вам просто нужно сделать запрос к URL-адресу файла, который вы хотите скачать, а затем записать ответ в файл. Вот пример кода, который скачивает изображение с интернета:

import requests
url = '<https://example.com/image.jpg>'
response = requests.get(url)
with open('image.jpg', 'wb') as f:
f.write(response.content)


➡️Работа с ошибками

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

➡️Вот пример кода, который скачивает реальный pdf файл с сайта:

import requests

headers = {'referer': 'https://nottka.com/4364-yoshinao-nakada-etude-allegro.html'}
response = requests.get('https://nottka.com/index.php?do=download&id=4420', headers=headers)
with open('4420.pdf', 'wb') as file:
file.write(response.content)


🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
10👍5🔥2
💬HTTP GET
Этот метод извлекает ресурс с сервера. Он идемпотентен: несколько идентичных запросов возвращают один и тот же результат.

💬HTTP PUT
Этот метод обновляет или создает ресурс. Он также идемпотентен: несколько идентичных запросов обновят один и тот же ресурс.

💬HTTP POST
Этот метод используется для создания новых ресурсов. Он не идемпотентен: два одинаковых POST-запроса создадут дублированные ресурсы.

💬HTTP DELETE
Этот метод используется для удаления ресурса. Он идемпотентен: несколько идентичных запросов удалят один и тот же ресурс.

💬HTTP PATCH
Метод PATCH применяется для частичного изменения ресурса.

💬HTTP HEAD
Метод HEAD запрашивает ответ, идентичный GET-запросу, но без тела ответа.

💬HTTP CONNECT
Метод CONNECT устанавливает туннель к серверу, идентифицированному целевым ресурсом.

💬HTTP OPTIONS
Этот метод описывает параметры связи для целевого ресурса.

💬HTTP TRACE
Этот метод выполняет тест возврата сообщения по пути к целевому ресурсу.

👀Так же прикрепляю фото без сжатия если будет плохо видно на основном фото

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍97🔥3
242313213.png
1.7 MB
👍73🔥2
Forwarded from IT memer
🤣24👍13😁54👌1
➡️Использование библиотеки Selenium

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

➡️Пример кода:

from selenium import webdriver

driver = webdriver.Firefox() # или любой другой браузер
driver.get('<http://www.example.com>')



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

Второй шаг - это использование метода refresh в Selenium. Этот метод позволяет обновить текущую страницу. В комбинации с библиотекой time в Python, мы можем настроить скрипт так, чтобы он автоматически обновлял страницу через определенные интервалы времени.

➡️Пример кода:

import time

while True:
driver.refresh() # обновляем страницу
time.sleep(10) # ждем 10 секунд


🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍5🔥3