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)
我在 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)