Использование оценки в Python?

Возможно, вам лучше использовать os.walk() для этого.

os.listdir() не отличает файлы от каталогов, и вы быстро столкнетесь с проблемами, пытаясь отсоединить их. Есть хороший пример использования os.walk() для рекурсивного удаления каталога здесь и подсказок о том, как адаптировать его к вашим обстоятельствам.

23
задан tshepang 9 March 2012 в 20:37
поделиться

9 ответов

Since you're floating both #inner-1 and #inner-2, you'll need a clear fix. Basically, setting overflow: auto on the parent (#wrapper) should do the trick.

однажды приведя узел в надлежащую форму и проверив его на предмет проблем с безопасностью, я мог скомпилировать его (получив объект кода) и построить на его основе новый объект функции. Намного менее просто (за исключением того, что ast.literal_eval так же просто, как eval для простейших случаев!), Но более безопасен и предпочтительнее в коде производственного качества.

Для многих задач я я видел, как люди (ab-) использовали exec и eval для мощных встроенных модулей Python, таких как getattr и setattr , индексация в глобальных объектов (), и т. д. дает предпочтительные и на самом деле часто более простые решения. Для конкретных целей, таких как синтаксический анализ JSON, лучше подходят библиотечные модули, такие как json (например, см. Комментарий SilentGhost к ответу в ушах на этот вопрос). И т. Д. И т. Д.

43
ответ дан 29 November 2019 в 00:44
поделиться

Я использую его как быстрый парсер JSON .. .

r='''
{
    "glossary": {
        "title": "example glossary"
        }
}
'''

print eval(r)['glossary']['title']
2
ответ дан 29 November 2019 в 00:44
поделиться

В программе, которую я когда-то написал, у вас был входной файл, в котором вы могли указывать геометрические параметры как в виде значений, так и в виде выражений на языке Python для предыдущих значений, например:

a=10.0
b=5.0
c=math.log10(a/b)

Парсер python считывает это входной файл и получил окончательные данные, оценивая значения и выражения с помощью eval ().

Я не утверждаю, что это хорошее программирование, но мне не нужно было управлять ядерным реактором.

4
ответ дан 29 November 2019 в 00:44
поделиться

Статья Википедии о eval довольно информативна и подробно описывает различные варианты использования.

Некоторые из предлагаемых вариантов использования:

15
ответ дан 29 November 2019 в 00:44
поделиться

Вы можете использовать его, чтобы позволить пользователям вводить свои собственные «скриптлеты»: небольшие выражения (или даже небольшие функции), которые можно использовать для настройки поведения комплексной системы.
В этом контексте, и если вам не нужно слишком заботиться о последствиях для безопасности (например, у вас есть образованная база пользователей), тогда eval () может быть хорошим выбором.

13
ответ дан 29 November 2019 в 00:44
поделиться

Раньше я использовал eval () для добавления интерфейса отладки в свое приложение. Я создал службу telnet, которая перенесла вас в среду работающего приложения. Входные данные обрабатывались через eval (), поэтому вы можете интерактивно запускать команды Python в приложении.

5
ответ дан 29 November 2019 в 00:44
поделиться

Eval - это способ взаимодействия с интерпретатором Python изнутри программы. Вы можете передавать литералы в eval, и он оценивает их как выражения Python.

Например -

print eval("__import__('os').getcwd()")

вернет текущий рабочий каталог.

Ура

1
ответ дан 29 November 2019 в 00:44
поделиться

eval () обычно не очень полезен. Одна из немногих вещей, для которых я ее использовал (ну, на самом деле это была exec () , но она очень похожа), - позволяла пользователю создавать сценарии для приложения, которое я написал на Python. Если бы он был написан на чем-то вроде C ++, мне бы пришлось встроить в приложение интерпретатор Python.

1
ответ дан 29 November 2019 в 00:44
поделиться

I use exec to create a system of plugins in Python.

    try:
        exec ("from " + plugin_name + " import Plugin")
        myplugin = Plugin(module_options, config=config)
    except ImportError, message:
        fatal ("No such module " + plugin_name + \
               " (or no Plugin constructor) in my Python path: " + str(message))
    except Exception:
        fatal ("Module " + plugin_name + " cannot be loaded: " + \
               str(sys.exc_type) + ": " + str(sys.exc_value) + \
               ".\n    May be a missing or erroneous option?")

With a plugin like:

class Plugin:

    def __init__ (self):
        pass

    def query(self, arg):
         ...

You will be able to call it like:

    result = myplugin.query("something")

I do not think you can have plugins in Python without exec/eval.

-1
ответ дан 29 November 2019 в 00:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: