ch
Feedback
Cool and Fun Python

Cool and Fun Python

前往频道在 Telegram

Крутой и весёлый Python. Случаи из практики и не только.

显示更多
472
订阅者
无数据24 小时
无数据7
无数据30
帖子存档
Какие IDE и редакторы кода вы использовали?
Anonymous voting

Для начала признаюсь, что не люблю однострочники. Особенно те, которые уходят за край второго 😱 монитора. Код должен быть в первую очередь читаемым и понятным. Но моржовый оператор из прошлого поста вызывал бурную активность в узких кругах. Поэтому ловите финальную версию:
from secrets import token_urlsafe

def generate_token(n=5, prefix="/"):
    """Генерирует токен с префиксом для короткого url размерностью n, исключая символы двойного прочтения."""
    while (token := token_urlsafe(n)) and any(char in token for char in ("-", "_", "O", "l", "I", "0", "1",)):
        pass
    return f"{prefix}{token}"
Финальная версия, из прода. Ещё тёплая. Тёплых вам выходных 🫶 ✍️ - беру на вооружение 🤯 - как это работает? 🎉 - пятница, время отдохнуть от кода

Праздники подходят к концу. А идеи для канала регулярно появляются 💡 Начнём пост с функции генерации уникальных токенов:
# Импортируем функцию token_urlsafe из модуля secrets
from secrets import token_urlsafe

# Определяем функцию generate_token с параметрами n и prefix, по умолчанию n=5, prefix='/'
def generate_token(n=5, prefix="/"): 
    """Генерирует токен с префиксом для короткого url размерностью n без символа "-" в токене."""
    # Входим в бесконечный цикл
    while True:
        # Генерируем случайный токен и добавляем префикс
        token = f"{prefix}{token_urlsafe(n)}"
        # Проверяем, содержит ли токен символ "-"
        if "-" not in token:
            # Если не содержит, то выходим из цикла
            break
    # Возвращаем значение переменной token
    return token
А теперь вспомним про моржовый оператор в Python. Писал про него 🔗тут и 🔗тут. Вспомнили? Тогда перепишем код покороче:
from secrets import token_urlsafe

def generate_token(n=5, prefix="/"): 
    while "-" in (token := f"{prefix}{token_urlsafe(n)}"): 
        pass 
    return token
Цикл, который ничего не делает в теле цикла, много чего делает в условии цикла. Забирайте лайфхак в копилку 😉

Продолжаем мариновать объекты Python. Начало тут Чем же так небезопасен pickle? В первую очередь программистом, который его использует неправильно. Ловите пример:
import pickle

res = pickle.loads(b"cos\nsystem\n(S'echo Hello world!'\ntR.")
В результате загрузки данных из строки байт в терминал отправится сообщение "Hello world!". Немного не то, для чего создавался модуль. Кстати, в переменной res будет хранится ноль, а не текст или команда. Но почему так? Дело в том, что модуль выполняет дандер __reduce__ замаринованного объекта в процессе преобразования файла/строки в объекты Python.
import pickle
import os


class MaliciousCode:
    def __reduce__(self):
        # При вызове функции pickle.load() будет выполнена команда удаления всех файлов в текущей директории
        return (os.system, ('rm -rf *',))


malicious_object = MaliciousCode()

with open('data.pickle', 'wb') as file:
    pickle.dump(malicious_object, file)

with open('data.pickle', 'rb') as file:
    loaded_object = pickle.load(file)
Отличных новогодних праздников. И не стреляйте себе в ногу 😉

Добрый вечер, коллеги! С наступившим 2024 годом. Как ваше самочувствие? Может хотите маринованных огурчиков, огуречного рассо
Добрый вечер, коллеги! С наступившим 2024 годом. Как ваше самочувствие? Может хотите маринованных огурчиков, огуречного рассола? 🥒 Модуль pickle Помимо всем привычного и безопасного JSON для сериализации и десериализации данных в Python есть модуль pickle, выполняющий аналогичные действия с питоновскими объектами Важно! Модуль pickle небезопасен. Распаковывайте только те данные, которым вы доверяете. Держите простой пример маринования трёх объектов в один файл:
import pickle

obj1 = {'name': 'Alice', 'age': 25}
obj2 = [1, 2, 3, 4, 5]
obj3 = ('a', 'b', 'c')

with open('data.pickle', 'wb') as f:
    pickle.dump(obj1, f)
    pickle.dump(obj2, f)
    pickle.dump(obj3, f)
В результате получим бинарный data.pickle с неудобным для чтения человеком содержимым, примерно таким:
 �        }�(� name�� Alice�� age�K u.� �        ]�(K K K K K e.� �        � a�� b�� c���.
Но если спустя время нам понадобятся наши словари и списки, достаём разносолы из файла:
import pickle

with open('data.pickle', 'rb') as f:
    loaded_obj1 = pickle.load(f)
    loaded_obj2 = pickle.load(f)
    loaded_obj3 = pickle.load(f)

print(loaded_obj1)  # {'name': 'Alice', 'age': 25}
print(loaded_obj2)  # [1, 2, 3, 4, 5]
print(loaded_obj3)  # ('a', 'b', 'c')
Успехов в новом году. И не только в консервациях 😉

Итоги голосования. Python на втором месте 🥈 Не хватило всего 30 голосов. Мы могли это сделать. Но сделаем в следующем году А пока всех с наступающими праздниками. Да прибудет с вами любимый язык программирования ❤️

А давайте устроим новогоднее чудо и проголосуем за Python в финале битвы языков программирования 🎄❤️‍🔥 https://tproger.ru/articles/final-bitvy-yazykov-programmirovaniya-v-2023-godu

О Markdown и Телеграм Если простыми словами, то Markdown превращает символы в оформление. Это язык разметки, как и HTML. Например двойное подчеркивание ➡️ __ ⬅️ до и после слова делает его курсивным. Как видите Телеграм поддерживает Markdown. После очередного обновления в Телеграм появилась подсветка синтаксиса. Работает так: \` \` \` Python # три открывающих апострофа и название ЯП код \` \` \` # три закрывающих апострофа
print('Hello world!')
Пишите свои примеры в комментариях P.S. В прошлых статьях также улучшено форматирование

Немного Python Fun 😂🤣😂 Оживить канал. Напомнить о нём подписчикам. Заодно и админу. Чтобы за выходные подготовил свежий по
Немного Python Fun 😂🤣😂 Оживить канал. Напомнить о нём подписчикам. Заодно и админу. Чтобы за выходные подготовил свежий пост. До скорой встречи

От 🌹 лица 🌹 IT 🌹 сообщества 🌹 поздравляю 🌹 лучшую 🌹 половину 🌹 канала 🌹 с 🌹 международным 🌹 женским 🌹 днём 🌹
От 🌹 лица 🌹 IT 🌹 сообщества 🌹 поздравляю 🌹 лучшую 🌹 половину 🌹 канала 🌹 с 🌹 международным 🌹 женским 🌹 днём 🌹

Поздравляем с днём рождения великодушного пожизненного диктатора - Гвидо Ван Россума 🎂
Поздравляем с днём рождения великодушного пожизненного диктатора - Гвидо Ван Россума 🎂