Получение информации по запросуPython

Программы на Python
Anonymous
Получение информации по запросу

Сообщение Anonymous »

Существует ли чистый, элегантный и питонический способ автоматического получения информации по запросу?
Чего я хотел бы добиться, так это иметь переменную, которая работает как дисковый кеш: если он указывает на полезные данные, обработка просто запускается, если нет — обработка приостанавливается, данные извлекаются (с диска или онлайн-API), а затем обработка возобновляется.
Как в следующем псевдокоде:
try:
result = process (somedata) # if somedata is None it throws an exception

except MissingDataError: # Or whatever exception would be thrown
somedata = retrieve_external_information()

result = process(somedata)

except ...: # Handling other exceptions

Однако, поскольку функция process может генерировать исключения по другим причинам, кроме отсутствия данных, мне придется их обработать, возможно, в рамках другой попытки... кроме - что совсем не чисто.
Практично ли это делать таким образом? Или безопаснее просто проверить, существуют ли данные, и получить их, если их нет:
if somedata is None:
somedata = retrieve_external_information()

try:
result = process (somedata)

except ...: # Handling other exceptions

Проблема в том, что я могу ссылаться на somedata в различных частях моей программы, поэтому каждый раз создавать сложный синтаксис довольно неясно. Поэтому в идеале хотелось бы написать что-то вроде этого:
try:
result = wrap_process (somedata, retrieve_external_information) # If somedata is None, it's retrieved automatically before proceeding with the processing

except ...: # Handling other exceptions


Подробнее здесь: https://stackoverflow.com/questions/786 ... -on-demand

Вернуться в «Python»