eval(dir()[0]) 在 python 中做了什么

What does eval(dir()[0]) do in python

我在 python 中遇到了一个程序的解决方案,但即使在搜索之后我也无法理解它的作用。谁能解释一下这条语句的作用。

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

函数dir,当不带参数调用时returns所有局部变量的名称,类似于locals().keys()

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

那么,显然,dir()[0]是第一个局部变量的名称,eval(dir()[0])计算变量名,即returns第一个局部变量的值。

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)