Python RU
Все для python разработчиков админ - @haarrp @python_job_interview - Python собеседования @ai_machinelearning_big_data - машинное обучение @itchannels_telegram - 🔥лучшие ит-каналы @programming_books_it - it книги @pythonl РКН: clck.ru/3Fmy2j
Mostrar más📈 Análisis del canal de Telegram Python RU
El canal Python RU (@pro_python_code) en el segmento lingüístico de Ruso es un actor destacado. Actualmente la comunidad reúne a 12 326 suscriptores, ocupando la posición 10 166 en la categoría Tecnologías y Aplicaciones y el puesto 52 207 en la región Rusia.
📊 Métricas de audiencia y dinámica
Desde su creación el невідомо, el proyecto ha mostrado un crecimiento acelerado, reuniendo a 12 326 suscriptores.
Según los últimos datos del 03 noviembre, 2026, el canal mantiene una actividad estable. En los últimos 30 días la variación de miembros fue de -16, y en las últimas 24 horas de -3, conservando un alto alcance.
- Estado de verificación: No verificado
- Tasa de interacción (ER): El promedio de interacción de la audiencia es 7.59%. Durante las primeras 24 horas tras publicar, el contenido suele obtener 3.08% de reacciones respecto al total de suscriptores.
- Alcance de las publicaciones: Cada publicación recibe en promedio 935 visualizaciones. En el primer día suele acumular 379 visualizaciones.
- Reacciones e interacción: La audiencia responde de forma activa: el promedio de reacciones por publicación es 5.
- Intereses temáticos: El contenido se centra en temas clave como api, docker, github, sql, linux.
📝 Descripción y política de contenido
El autor describe el recurso como un espacio para expresar opiniones subjetivas:
“Все для python разработчиков
админ - @haarrp
@python_job_interview - Python собеседования
@ai_machinelearning_big_data - машинное обучение
@itchannels_telegram - 🔥лучшие ит-каналы
@programming_books_it - it книги
@pythonl
РКН: clck.ru/3Fmy2j”
Gracias a la alta frecuencia de actualizaciones (últimos datos recibidos el 04 noviembre, 2026), el canal mantiene la vigencia y un amplio alcance. La analítica demuestra que la audiencia interactúa activamente con el contenido, lo que lo convierte en un punto de referencia dentro de la categoría Tecnologías y Aplicaciones.
$ git clone https://github.com/thanhminh6996/CompressedCrack.git
$ cd ./CompressedCrack
Использование:
Нас интересует скрипт crack.py который принимает несколько параметров:
$ python crack.py -i file_name min_character max_character characters
🌵 -i file_name : путь до архива.
🌵 min_character: минимальное количество символов в пароле.
🌵 max_character: максимальное количество символов в пароле.
🌵 characters: используемые в пароле символы по которым будет осуществляться перебор, 123qwerty!@$ и т.д.
$ python crack.py -i file.zip 1 5 1234567890
⚙️ GitHub/Инструкция
@pro_python_codedef singleton(cls):
# храним все разные синглтоны с одном словаре (класс -> экземпляр)
instances = {}
def getinstance():
# если класса нет среди ключей нашего словаря - создадим экземпляр
if cls not in instances:
instances[cls] = cls()
# вернем ссылку на него
return instances[cls]
return getinstance
Вот так мы помечаем, что класс MySingleton – синглтон:
@singleton
class MySingleton:
def __init__(self):
self.x = 10
print("__init__")
📎 Пример (проверяем единственность экземляра):
>>> x1 = MySingleton()
init
>>> x2 = MySingleton()
>>> x1 is x2
True
>>> x1.x = 100
>>> x2.x
100
• init было вызвано единажды
• Обе переменные указывают на один экземпляр
• При изменении полей в одном экземпляре, они меняются и во втором.
Плохо то, что MySingleton здесь – это функция (результат работы декоратора), а не класс: вы не можете вызывать класс-методы у нее. Эта проблема решается использованием метаклассов.
# обратите внимание, метакласс наследован от type
class Singleton(type):
_instances = {}
def __call__(cls, *args, **kwargs):
if cls not in cls._instances:
cls._instances[cls] = super(Singleton, cls).__call__(*args, **kwargs)
return cls._instances[cls]
Применение (Python 3):
class MySingleton(metaclass=Singleton):
def __init__(self):
self.x = 10
print("__init__")
⚠️ Не злоупотребляйте синглтонами, они осложняют тестирование кода.d = {"a": 2, "b": 3, "c": 2}
f = lambda: zip(d.values(), d.keys())
max_ = max(f())
min_ = min(f())
print(max_, min_)>>> import timeit
>>> timeit.timeit('"-".join(str(n) for n in range(100))', number=10000)
0.23387694358825684
>>> timeit.timeit('"-".join([str(n) for n in range(100)])', number=10000)
0.20793890953063965
>>> timeit.timeit('"-".join(map(str, range(100)))', number=10000)
0.2012779712677002
Оказалось, что третий.
Если в тестируемом кусочке кода вам потребуется обратиться к переменным или модулям из глобальной зоны видимости, то удобно воспользоваться параметром globals и присвоить его результаты функции globals().
>>> import math
>>> my_const = 6.28
>>> timeit.timeit('math.cos(my_const)', globals=globals())
0.12635547306854278
Можно также передавать в timeit имя функции (без параметров):
>>> import timeit >>> def foo(): "-".join(map(str, range(1000))) ... >>> timeit.timeit(foo, number=1000)📎 timeit можно вызвать из терминала:
python -m timeit -s "from math import sqrt" -n 10000 "x = sqrt(25)"После ключа -s идет строка инициализации; она выполнится единожды. Ключ -n установит число итераций теста (рекомендуется не меньше 1000). ⚠️ Помните, что результаты тестов могут отличаться в зависимости от вашего компьютера, ОС, версии Python, фаз луны и много еще чего. Также советуем вам не увлекаться чрезмерной оптимизацией во вред читаемости кода. Желаем вам продуктивного программирования!
