TGViewer
Cool and Fun Python Cool and Fun Python @python3k · 509 subscribers
Post #119 479
Целую неделю ждал хотя бы 10 реакций 🤯. Не дождался. Этот пост посвящается девятку интересующихся. 🫡

Что же такое ast.literal_eval ? Если просто и коротко, то это функция для превращения строки str в другой питоновский тип данных.
Смотрите пример, чтобы всё понять:
import ast

# Возвращает None
result = ast.literal_eval('None')
print(result) # None
print(type(result)) # <class 'NoneType'>

# Возвращает список
result = ast.literal_eval('[1, 2, 3]')
print(result) # [1, 2, 3]
print(type(result)) # <class 'list'>

# Возвращает словарь
result = ast.literal_eval('{"key": "value"}')
print(result) # {'key': 'value'}
print(type(result)) # <class 'dict'>


Как видно из примера, функция literal_evel сама подбирает нужный тип для конвертации содержимого строки. Круто!

⚠Внимание!
literal_eval удобно использовать, даже если вы не уверены в данных. Выполнить rm -rf / функция не сможет. Но будьте готовы отлавливать ошибки, если данные не поддаются преобразованию:
result = ast.literal_eval('a = 42')  # SyntaxError: invalid syntax
result = ast.literal_eval('Hi') # ValueError: malformed node or string on line 1: <ast.Name object at 0x7969dde980>


Для самых любопытных, напомню. 🤓
В Python есть модуль pickle. Он умеет мариновать питоновские типы в виде байт-файла. О нём писал тут и тут.

А ещё в Python есть модуль json. Он тоже умеет превращать строк в данные и наоборот. Про него я тут не писал. 🙃
#познавательно #lifehack
  • 👍 16
  • ✍ 3
  • 🔥 3
  • ❤ 1
  • 🤔 1
More from @python3k
  1. Feb 25, 2026Магические числа Нравится волшебство? А вот и зря. Магические числа - антипаттерн в програ…
  2. Feb 9, 2026Про ОС Оказывается мысли о том, что у программиста должен быть MacBook, а код надо писать…
  3. Feb 1, 2026Кто-нибудь пользовался новой удалённой отладкой в Python 3.14? Поделитесь своим опытом в к…
  4. Jan 25, 2026Redis хорош, но... Ничего не имею против хранения данный в ОЗУ при помощи Redis. Быстрый д…
  5. Jan 20, 2026В продолжение идеи про словарь функций Начало тут def handle_negative(): print("Обработка…
  6. Jan 11, 2026Альтернатива if-elif-else / match-case из далёкого прошлого Этот приём я узнал лет пять на…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →