Циклический сбор мусора
ℹ️ Циклический сбор мусора — это процесс автоматического освобождения памяти, занимаемой недоступными объектами. В 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.exe2. Из папки с интерпретатором переходим в
\Lib\idlelib\Пример:
C:\Users\Progr\AppData\Local\Programs\Python\Python313\Lib\idlelib3. С помощью редактора открываем файл
editor.py4. Добавляем строки с
### в соответствии с примером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: класс MethodTypetypes.MethodType — это способ динамического добавления функций в экземпляры класса как методы. Это позволяет создавать методы "на лету" и добавлять их в объекты, что может быть полезно в сложных сценариях, когда структура класса определяется динамически.В этом примере функция external_func добавляется в экземпляр класса MyClass как метод. Это позволяет вызывать её как обычный метод класса, используя атрибуты экземпляра.
@PyMapChannel 🐍
❤2
Библиотека deep-translator: мощный инструмент для многоязычного перевода
Пример:
Документация доступна тут: deep-translator
deep-translator - это библиотека Python, разработанная для многоязычного перевода текстов. Она поддерживает более 100 языков и обеспечивает высокую точность перевода. Библиотека работает с различными API (Google Translate, Yandex Translator, и т.д.), что делает её гибким инструментом для разработчиков. Пример:
from deep_translator import GoogleTranslator
# Объект переводчика
translator = GoogleTranslator(source='en', target='ru')
text_to_translate = 'Hello, how are you?'
# Вызов метода для перевода
translated_text = translator.translate(text_to_translate)
print(text_to_translate) # Hello, how are you?
print(translated_text) # Привет, как дела?
Документация доступна тут: deep-translator
⚡4
Библиотека shlex: мощный инструмент для разбора строк в Python
shlex - это библиотека Python, предназначенная для разбора строк, которые содержат текстовые команды, подобно тому, как это делает командная оболочка Unix. Она позволяет легко разделять строки на токены, учитывая при этом кавычки и экранирование, что делает её идеальным инструментом для работы с командными строками и аргументами.
Пример:
Документация доступна тут: shlex
shlex - это библиотека Python, предназначенная для разбора строк, которые содержат текстовые команды, подобно тому, как это делает командная оболочка Unix. Она позволяет легко разделять строки на токены, учитывая при этом кавычки и экранирование, что делает её идеальным инструментом для работы с командными строками и аргументами.
Пример:
import shlex
# Строка с командой
command_line = 'python script.py --arg1 "value with spaces" --arg2=value2'
# Разбор строки на токены
tokens = shlex.split(command_line)
print(tokens) # ['python', 'script.py', '--arg1', 'value with spaces', '--arg2=value2']
Документация доступна тут: shlex
👍4🔥1💯1
Модуль argparse: функция ArgumentParser
Функция argparse.ArgumentParser() позволяет создавать интерфейс командной строки для ваших программ.
С помощью этого модуля вы можете легко определять, какие аргументы принимает ваша программа, и автоматически генерировать справку по использованию. Например, в приведенном выше коде мы создаем парсер, который ожидает аргумент --name, и выводим приветствие с указанным именем.
Это удобно для создания пользовательских интерфейсов и упрощает взаимодействие с программой через командную строку.
🐍 Python Map | Обучение
import argparse
parser = argparse.ArgumentParser(description='Пример использования argparse')
parser.add_argument('--name', type=str, help='Ваше имя')
args = parser.parse_args()
print(f'Привет, {args.name}!')
Функция argparse.ArgumentParser() позволяет создавать интерфейс командной строки для ваших программ.
С помощью этого модуля вы можете легко определять, какие аргументы принимает ваша программа, и автоматически генерировать справку по использованию. Например, в приведенном выше коде мы создаем парсер, который ожидает аргумент --name, и выводим приветствие с указанным именем.
Это удобно для создания пользовательских интерфейсов и упрощает взаимодействие с программой через командную строку.
🐍 Python Map | Обучение
⚡2🔥2💯1
Модуль unittest: создание тестов
Функция unittest.TestCase позволяет создавать классы с тестами для проверки корректности работы функций и методов.
Модуль unittest — это встроенный в Python инструмент для автоматизированного тестирования кода. Он помогает создавать тестовые случаи, группировать их в тестовые наборы и автоматически запускать с проверкой ожидаемых результатов.
В примере выше описан простой тест для функции multiply, который проверяет умножение положительных и отрицательных чисел с помощью assertEqual. Такой подход помогает быстро выявлять ошибки и обеспечивать стабильность кода.
Использование unittest облегчает поддержку и развитие проектов, позволяя гарантировать, что изменения не ломают существующую функциональность.
🐍 Python Map | Обучение
import unittest
def multiply(a, b):
return a * b
class TestMultiply(unittest.TestCase):
def test_multiply_numbers(self):
self.assertEqual(multiply(3, 4), 12)
def test_multiply_negative(self):
self.assertEqual(multiply(-1, 5), -5)
if __name__ == '__main__':
unittest.main()
Функция unittest.TestCase позволяет создавать классы с тестами для проверки корректности работы функций и методов.
Модуль unittest — это встроенный в Python инструмент для автоматизированного тестирования кода. Он помогает создавать тестовые случаи, группировать их в тестовые наборы и автоматически запускать с проверкой ожидаемых результатов.
В примере выше описан простой тест для функции multiply, который проверяет умножение положительных и отрицательных чисел с помощью assertEqual. Такой подход помогает быстро выявлять ошибки и обеспечивать стабильность кода.
Использование unittest облегчает поддержку и развитие проектов, позволяя гарантировать, что изменения не ломают существующую функциональность.
🐍 Python Map | Обучение
🔥3
Модель pytest: создание тестов
Pytest — это популярный сторонний фреймворк для тестирования в Python, который предоставляет простой и мощный способ писать тесты. В отличие от unittest, pytest не требует использования классов, а тесты можно писать в виде обычных функций с ассертами.
Pytest автоматически находит тестовые функции по префиксу test_ и запускает их. Ассерты в pytest работают с расширенными отчетами об ошибках, что упрощает отладку. Кроме того, pytest поддерживает фикстуры — специальные функции для подготовки тестового окружения и повторного использования кода.
В приведённом примере описаны два простых теста для функции multiply, которые проверяют умножение положительных и отрицательных чисел. Такой подход делает тесты компактными и читаемыми.
Использование pytest облегчает создание масштабируемых и удобных для поддержки тестов, помогает быстро обнаруживать ошибки и повышает качество кода.
🐍 Python Map | Обучение
def multiply(a, b):
return a * b
def test_multiply_numbers():
assert multiply(3, 4) == 12
def test_multiply_negative():
assert multiply(-1, 5) == -5
Pytest — это популярный сторонний фреймворк для тестирования в Python, который предоставляет простой и мощный способ писать тесты. В отличие от unittest, pytest не требует использования классов, а тесты можно писать в виде обычных функций с ассертами.
Pytest автоматически находит тестовые функции по префиксу test_ и запускает их. Ассерты в pytest работают с расширенными отчетами об ошибках, что упрощает отладку. Кроме того, pytest поддерживает фикстуры — специальные функции для подготовки тестового окружения и повторного использования кода.
pip install pytest
В приведённом примере описаны два простых теста для функции multiply, которые проверяют умножение положительных и отрицательных чисел. Такой подход делает тесты компактными и читаемыми.
Использование pytest облегчает создание масштабируемых и удобных для поддержки тестов, помогает быстро обнаруживать ошибки и повышает качество кода.
🐍 Python Map | Обучение
⚡2