Рейтинг языков программирования
Язык C потерял популярность и был обогнан C++ и Java.
PHP вылетел из топ-10, уступив место Go.
Будущее Rust и Kotlin
Rust продолжает набирать популярность, хотя его сложная кривая обучения мешает ему стать наиболее распространенным языком.
Kotlin, наоборот, разочаровал: он потерял позиции и вышел из топ-20.
Новые языки в рейтинге
Zig поднялся с 149-го на 61-е место, а Mojo, который появился всего 2 года назад, прыгнул с 194-го на 68-е место.
Mojo обещает стать серьезным конкурентом Python.
🔗 Источник
🐍 Python Map | Обучение
В 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 | Обучение | #теория
Паттерны (шаблоны) проектирования — это проверенные решения для распространенных проблем в разработке программного обеспечения. Они упрощают проектирование и улучшают читаемость кода. Основные паттерны:
- Singleton (Одиночка): Обеспечивает единственный экземпляр класса с глобальной точкой доступа.
- Factory (Фабрика): Определяет интерфейс для создания объектов, позволяя изменять тип создаваемых объектов.
- Observer (Наблюдатель): Устанавливает зависимость "один ко многим", уведомляя зависимые объекты об изменениях.
- Strategy (Стратегия): Инкапсулирует семейство алгоритмов, позволяя их взаимозаменяемость.
🐍 Python Map | Обучение | #теория
👍2
Модуль sys: функция unraisablehook
Функция
Она вызывается в тех случаях, когда возникает исключение, которое Python не может обработать с помощью стандартного блока
🐍 Python Map | Обучение
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
Циклический сбор мусора
ℹ️ Циклический сбор мусора — это процесс автоматического освобождения памяти, занимаемой недоступными объектами. В Python встроенный механизм сборки мусора автоматически освобождает память, занятую объектами без ссылок.
*️⃣ В большинстве случаев Python самостоятельно заботится о сборке мусора, но в некоторых ситуациях, особенно при работе с большими объемами данных, ручное управление может быть полезным.
Python Map | Обучение 🐍
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 строки имеют несколько полезных методов для форматирования, которые позволяют дополнить строку до заданной длины.
Выравнивает строку по левому краю, добавляя символы (по умолчанию пробелы) справа до указанной ширины.
Пример:
Выравнивает строку по правому краю, добавляя символы (по умолчанию пробелы) слева до указанной ширины.
Пример:
Выравнивает строку по центру, добавляя символы (по умолчанию пробелы) с обеих сторон до указанной ширины.
Пример:
Python Map | Обучение 🐍
В 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
1. Определяем местоположение вашего Python
Пример:
2. Из папки с интерпретатором переходим в
Пример:
3. С помощью редактора открываем файл
4. Добавляем строки с
5. Сохраняем внесенные изменения
Python Map | Обучение 🐍
Представленный способ проверен для 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 | Обучение 🐍
👍2❤1
Скрытие текста с помощью невидимых символов Unicode
⚙️ Как работает:
- Используются невидимые символы Unicode (
- Они кодируют биты сообщения (0 и 1) прямо в тексте.
- Файл выглядит обычным, но содержит скрытую информацию.
📋 Пример кода:
- Скрытие:
- Извлечение:
💎 Пример:
- Скрываем: hide_message("Lorem ipsum " * 4, "secret").
- Извлекаем: extract_message(скрытый_текст) → "secret".
Python Map | Обучение 🐍
⚙️ Как работает:
- Используются невидимые символы 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) прямо в тексте. - Файл выглядит обычным, но содержит скрытую информацию. 📋 Пример…
В этом тексте спрятано сообщение :
˅˅˅˅˅
Top Gear (рус. Высшая передача) — британская телепередача, посвящённая автомобилям. Первые выпуски передачи вышли в 1977 году. Это была передача в формате тележурнала, который в течение долгого времени не менялся. В 2002 году произо
˄˄˄˄˄
Для извлечения используйте функцию extract_message, описанную в посте выше, предав в качестве аргумента текст между стрелками
˅˅˅˅˅
Top Gear (рус. Высшая передача) — британская телепередача, посвящённая автомобилям. Первые выпуски передачи вышли в 1977 году. Это была передача в формате тележурнала, который в течение долгого времени не менялся. В 2002 году произо
˄˄˄˄˄
Для извлечения используйте функцию extract_message, описанную в посте выше, предав в качестве аргумента текст между стрелками
Что получится после его извлечения пишите в комментариях
🔥3🤩1🗿1
PEP 751 принят: Python получит стандартный lock-файл для точной установки зависимостей
Создатели языка утвердили ввод стандартного lock-файл для проекта. Это обеспечит установку фиксированных версий зависимостей и значительно упростит управление воссоздание проекта на новой машине.
Существующие решения — pip freeze, pip-tools, Poetry, PDM, uv используют разные форматы, не совместимые друг с другом и требуют отдельной логики от инструментов и пользователей. Новый стандарт должен устранить эту фрагментацию.
Создатели языка утвердили ввод стандартного lock-файл для проекта. Это обеспечит установку фиксированных версий зависимостей и значительно упростит управление воссоздание проекта на новой машине.
Существующие решения — pip freeze, pip-tools, Poetry, PDM, uv используют разные форматы, не совместимые друг с другом и требуют отдельной логики от инструментов и пользователей. Новый стандарт должен устранить эту фрагментацию.
This media is not supported in your browser
VIEW IN TELEGRAM
Когда навайбкодил приложение в СhatGPT и уже подсчитываешь миллионы своего стартапа.
То самое приложение:
То самое приложение:
❤7
>>> 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 | Обучение 🐍
🤯3❤2
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