【发布时间】:2018-08-27 20:19:24
【问题描述】:
我在 python 中遇到了一个程序的解决方案,但即使在搜索之后我也无法理解它的作用。有人可以解释一下这个声明会做什么。
a, b, c = map(numpy.array,eval(dir()[0]))
【问题讨论】:
-
哪一部分你不明白?
-
一般来说,每当你看到
eval或exec的来电时,在你的左肩上吐三下然后逃跑,因为stackoverflow.com/questions/1832940/… -
eval(dir()[0])既可怕又脆弱。不要以此为例说明你应该在自己的代码中做什么。 -
dir()[0]是当前本地命名空间中的名字,按字母顺序排序。eval评估该名称以获取它所代表的对象。map然后迭代它并执行numpy.array(x) for x in eval(dir()[0])。然后我们假设evaled 对象中有三个项目,并将来自map的三个数组分配给这些变量。 -
Apparently this is supposed to be an exploit vector against auto-grading of online code challenges,这就是为什么他们在做一些在正常程序中没有意义的事情。
标签: python python-3.x python-2.7 dictionary eval