Что делает eval (dir () [0]) в python - PullRequest
0 голосов
/ 27 августа 2018

Я нашел решение для программы на python, но я не мог понять, что она делает, даже после поиска. Может кто-нибудь объяснить мне, что будет делать это утверждение.

a, b, c = map(numpy.array,eval(dir()[0]))

1 Ответ

0 голосов
/ 27 августа 2018

Функция dir, при вызове без аргументов возвращает имена всех локальных переменных, аналогично locals().keys().

def f(y):
     print(dir())  # prints ['y']

Тогда, очевидно, dir()[0] - это имя первой из локальных переменных, а eval(dir()[0]) оценивает имя переменной, то есть возвращает значение первой локальной переменной.

def f(y):
     print(dir())  # prints ['y']
     print(dir()[0])  # prints 'y'
     print(eval(dir()[0]))  # prints the value of y

Например:

>>> f(77)
['y']
y
77
>>> f([1,2,3])
['y']
y
[1, 2, 3]

Функция map вызывает первый аргумент (который должен вызываться) с каждым из значений во втором аргументе (который должен быть итеративным) и генерирует результаты, например,

>>> for result in map(str.upper, ['foo', 'bar', 'baz']):
...     print(result)
...
FOO
BAR
BAZ

Объединяя их вместе и предполагая, что первой локальной переменной является список с именем first_variable, затем этот код:

a, b, c = map(numpy.array,eval(dir()[0]))

будет таким же, как этот код:

a, b, c = first_variable
a = numpy.array(a)
b = numpy.array(b)
c = numpy.array(c)
...