Функция 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)