Python Map | Обучение
247 subscribers
196 photos
4 videos
1 file
85 links
Образовательный канал для программистов на Python 🐍

Сотрудничество – @HackingIP
Download Telegram
Рейтинг языков программирования

В 2024 году Python увеличил свою популярность на 9,3%, что значительно больше, чем у ближайших конкурентов: Java (+2,3%), JavaScript (+1,4%) и Go (+1,2%).
Изменения в топ-10 языков программирования

Язык C потерял популярность и был обогнан C++ и Java.
PHP вылетел из топ-10, уступив место Go.

Будущее Rust и Kotlin

Rust продолжает набирать популярность, хотя его сложная кривая обучения мешает ему стать наиболее распространенным языком.
Kotlin, наоборот, разочаровал: он потерял позиции и вышел из топ-20.

Новые языки в рейтинге
За которыми стоит следить, — это Zig и Mojo


Zig поднялся с 149-го на 61-е место, а Mojo, который появился всего 2 года назад, прыгнул с 194-го на 68-е место.
Mojo обещает стать серьезным конкурентом Python.

🔗 Источник

🐍 Python Map | Обучение
🔥2
Паттерны проектирования

Паттерны (шаблоны) проектирования — это проверенные решения для распространенных проблем в разработке программного обеспечения. Они упрощают проектирование и улучшают читаемость кода. Основные паттерны:

- Singleton (Одиночка): Обеспечивает единственный экземпляр класса с глобальной точкой доступа.

- Factory (Фабрика): Определяет интерфейс для создания объектов, позволяя изменять тип создаваемых объектов.

- Observer (Наблюдатель): Устанавливает зависимость "один ко многим", уведомляя зависимые объекты об изменениях.

- Strategy (Стратегия): Инкапсулирует семейство алгоритмов, позволяя их взаимозаменяемость.

🐍 Python Map | Обучение | #теория
👍2
>>> a = 2, 3, 4, 5
>>> a
Модуль sys: функция unraisablehook

import sys

def unraisablehook(unraisable):
print(f'Исключение: {unraisable.exc_type.__name__}: {unraisable.exc_value}')

sys.unraisablehook = unraisablehook

class Broken:
def __del__(self):
raise RuntimeError('Ошибка в __del__')

obj = Broken()
del obj # Исключение: RuntimeError: Ошибка в __del__


Функция sys.unraisablehook() позволяет переопределить поведение невыполнимых исключений.

Она вызывается в тех случаях, когда возникает исключение, которое Python не может обработать с помощью стандартного блока try-except. Например, это происходит, когда исключение возникаетdelрукторе (__del__) или во время сборки мусора.

Это полезно для отладки и логирования неожиданных ошибок.


🐍 Python Map | Обучение
2👍1
Циклический сбор мусора

import gc

# Объекты с циклическими ссылками
class MyClass:
def __init__(self):
self.circular_ref = None

obj1 = MyClass()
obj2 = MyClass()

# Удаляем ссылки на объекты
obj1.circular_ref = obj2
obj2.circular_ref = obj1

del obj1
del obj2

# Запуск сборки мусора
gc.collect()


ℹ️ Циклический сбор мусора — это процесс автоматического освобождения памяти, занимаемой недоступными объектами. В Python встроенный механизм сборки мусора автоматически освобождает память, занятую объектами без ссылок.

*️⃣ В большинстве случаев Python самостоятельно заботится о сборке мусора, но в некоторых ситуациях, особенно при работе с большими объемами данных, ручное управление может быть полезным.

Управлять этим процессом можно с помощью модуля gc (garbage collector).


Python Map | Обучение 🐍
Методы str: ljust(), rjust(), center()

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

ljust(width, fillchar=' ')
Выравнивает строку по левому краю, добавляя символы (по умолчанию пробелы) справа до указанной ширины.

Пример:
text = "Hello"
padded_text = text.ljust(10, '*')
print(padded_text) # Вывод: Hello*****


rjust(width, fillchar=' ')
Выравнивает строку по правому краю, добавляя символы (по умолчанию пробелы) слева до указанной ширины.

Пример:
text = "Hello"
padded_text = text.rjust(10, '*')
print(padded_text) # Вывод: *****Hello


center(width, fillchar=' ')
Выравнивает строку по центру, добавляя символы (по умолчанию пробелы) с обеих сторон до указанной ширины.

Пример:
text = "Hello"
padded_text = text.center(10, '*')
print(padded_text) # Вывод: **Hello****


Python Map | Обучение 🐍
1
Добавляем горизонтальную прокрутку в IDLE Python

Представленный способ проверен для IDLE Python 3.13 в Windows


1. Определяем местоположение вашего Python
>>> print(__import__('sys').executable)

Пример: C:\Users\Progr\AppData\Local\Programs\Python\Python313\pythonw.exe

2. Из папки с интерпретатором переходим в \Lib\idlelib\
Пример: C:\Users\Progr\AppData\Local\Programs\Python\Python313\Lib\idlelib

3. С помощью редактора открываем файл editor.py

4. Добавляем строки с ### в соответствии с примером

pyself.vbar = vbar = Scrollbar(text_frame, name='vbar')
self.hbar = hbar = Scrollbar(text_frame, orient=HORIZONTAL, name='hbar') ###
...
vbar['command'] = self.handle_yview
vbar.grid(row=1, column=2, sticky=NSEW)
hbar['command'] = text.xview ###
hbar.grid(row=2, column=1, sticky=NSEW) ###

text['yscrollcommand'] = vbar.set
text['xscrollcommand'] = hbar.set ###


5. Сохраняем внесенные изменения

Python Map | Обучение 🐍
👍21
Скрытие текста с помощью невидимых символов Unicode

⚙️ Как работает:
- Используются невидимые символы Unicode (\u200b, \u200c).
- Они кодируют биты сообщения (0 и 1) прямо в тексте.
- Файл выглядит обычным, но содержит скрытую информацию.

📋 Пример кода:

- Скрытие:
def hide_message(text, message):
binary = ''.join(format(ord(char), '08b') for char in message)
return ''.join([char + ('\u200b' if bit == '0' else '\u200c') for char, bit in zip(text, binary)])


- Извлечение:
def extract_message(hidden_text):
binary = ''.join(['0' if char == '\u200b' else '1' for char in hidden_text if char in ('\u200b', '\u200c')])
return ''.join([chr(int(binary[i:i+8], 2)) for i in range(0, len(binary), 8)])


💎 Пример:
- Скрываем: hide_message("Lorem ipsum " * 4, "secret").
- Извлекаем: extract_message(скрытый_текст) → "secret".

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


Python Map | Обучение 🐍
🆒3🔥1
Python Map | Обучение
Скрытие текста с помощью невидимых символов Unicode ⚙️ Как работает: - Используются невидимые символы Unicode (\u200b, \u200c). - Они кодируют биты сообщения (0 и 1) прямо в тексте. - Файл выглядит обычным, но содержит скрытую информацию. 📋 Пример…
В этом тексте спрятано сообщение:

˅˅˅˅˅

T​o‌p‌ ​G‌e​a​r​ ​(‌р‌у‌с​.‌ ​В​ы​с‌ш‌а‌я​ ‌п​е​р​е‌д‌а‌ч​а​)​ ​—​ ‌б‌р‌и​т​а‌н‌с​к​а‌я‌ ‌т​е‌л​е​п​е‌р​е‌д‌а‌ч‌а​,​ ‌п​о‌с‌в‌я‌щ​ё‌н‌н‌а​я‌ ​а​в​т​о‌м​о‌б‌и‌л​я​м‌.‌ ​П‌е‌р​в‌ы​е‌ ‌в​ы​п‌у​с‌к​и​ ‌п​е‌р‌е‌д‌а​ч‌и​ ‌в​ы​ш​л​и​ ‌в‌ ‌1‌9​7​7‌ ​г‌о​д​у‌.‌ ​Э‌т​о‌ ‌б​ы​л​а​ ‌п​е‌р‌е‌д​а​ч​а​ ​в‌ ​ф​о​р​м‌а‌т​е‌ ‌т​е‌л​е​ж​у​р‌н‌а​л​а​,​ ‌к​о‌т‌о​р‌ы‌й‌ ​в​ ‌т‌е​ч‌е‌н‌и​е​ ‌д‌о​л​г‌о​г‌о​ ‌в‌р​е‌м‌е​н​и​ ​н‌е​ ‌м‌е‌н‌я​л​с‌я‌.​ ​В​ ‌2​0​0‌2‌ ​г​о‌д‌у​ ​п‌р​о​и​з​о​

˄˄˄˄˄

Для извлечения используйте функцию extract_message, описанную в посте выше, предав в качестве аргумента текст между стрелками

Что получится после его извлечения пишите в комментариях
🔥3🤩1🗿1
PEP 751 принят: Python получит стандартный lock-файл для точной установки зависимостей

Создатели языка утвердили ввод стандартного lock-файл для проекта. Это обеспечит установку фиксированных версий зависимостей и значительно упростит управление воссоздание проекта на новой машине.

Существующие решения — pip freeze, pip-tools, Poetry, PDM, uv используют разные форматы, не совместимые друг с другом и требуют отдельной логики от инструментов и пользователей. Новый стандарт должен устранить эту фрагментацию.
This media is not supported in your browser
VIEW IN TELEGRAM
Когда навайбкодил приложение в СhatGPT и уже подсчитываешь миллионы своего стартапа.

То самое приложение:
7
Когда наняли грамотного пиарщика
5
>>> int('۹')
9
>>> int('߇७𝟟')
777
>>> '੨'.isdecimal()
True
>>> bool(__import__('re').match('\d', '߁'))
True

Важное про цифры и Юникод

0, 1, 2, 3, 4, 5, 6, 7, 8, 9 — не единственные символы, которые считаются цифрами. Python следует правилам Юникода и обрабатывает несколько сотен символов как цифры. Полный список находится здесь.

Это крайне важно знать, потому что эти символы влияют на такие функции, как int, unicode.isdecimal и даже re.match.

Предупрежден — значит вооружен.


Python Map | Обучение
🐍
🤯32
Понаберут с улицы
from types import MethodType

class MyClass:
def __init__(self, value):
self.value = value

def external_func(self, increment):
return self.value + increment

instance = MyClass(10)
instance.method = MethodType(external_func, instance)

print(instance.method(5))


Модуль types: класс MethodType

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

В этом примере функция external_func добавляется в экземпляр класса MyClass как метод. Это позволяет вызывать её как обычный метод класса, используя атрибуты экземпляра.


@PyMapChannel 🐍
2
Главное, чтоб работало, а остальное неважно

(не делайте так)
😁3