Repr and Eval functions in Python?
在陈述之前,我已经读过这个和这个。但我仍然不清楚,究竟在哪里实际使用/应用了eval和repr?实际应用
- 当您想在软件中创建安全漏洞时,可以随时使用eval。
- 那么,这就像是阴性测试吗?
- @wim nice one:)用户1162512您可以阅读有关eval()的文章。
- 虽然这确实是一个很好的问题,但是在这个网站上,eval和repr都被解释了很多次,很多次,这个问题的副本太多了,这让我很头疼。请在下一次搜索该网站,因为您自己承认您了解repr。我真的不明白你为什么问这个问题。
- @Inbarrose——你没看到我已经提供了与之相关的最好的线程(我读过很多),但我没有真正看到任何一个线程的实际应用。第二,你标记为重复的问题,我的问题和它完全不同。
- @用户1162512这是您的意见。如果你想问一个有针对性的问题,按照"什么是eval的真实应用程序?"您应该知道它不适合此网站格式。第二,你希望从这种固执己见的功能中得到什么样的答案?这就像在问"什么是真实的打印应用程序?"你会得到任何东西作为答案,这些都不会对任何人有用。咨询如何询问您是否需要。
repr一直在引擎盖下使用,例如每次格式化一个容器时,大多数情况下都是在打印某些内容等。
1 2 3 4 5 6 7 8 9 10 11 12 13
| >>> class A:
... def __repr__(self):
... print('calling repr')
... return('<object of class A>')
...
>>> print(A())
calling repr
<object of class A>
>>> a = [A() for _ in range (3)]
>>> '{}'.format(a)
calling repr
calling repr
calling repr |
eval…我不知道。我甚至认为那些声称有必要的人可能是错的。
- 不需要单独使用eval,因为它可以很容易地被其他功能取代。但是,有时有必要加载任意python代码(这是eval的所有问题的根源,并由可用于重新实现eval的函数共享)。
- @对于这些情况,我个人更喜欢import或__import__,而不是eval。我不知道,也许这只是我对以东十一世(0)和它的弟兄们长期以来的怨恨。
- 如果没有进一步的限定,这确实像是一种非理性的恐惧症。我把__import__算在布雷特人中,基本上是exec与find_module_path和open的结合。如果您有一个字符串,并将其转储到一个文件中以便动态导入它,那么您就没有得到任何东西(但通过向元编程中添加文件I/O而增加了复杂性)。当然,如果您只想动态加载已经在文件中的模块,那么导入机制就是正确的。