eval()在x = eval(input(“hello”))中的含义是什么?

时间:2014-02-10 20:45:03

标签: python eval

x=eval(input("hello"))是什么意思,它不是代替eval()而不是int吗?我认为x是一个属于某个确定其类型的类的变量,eval是否包含所有已知的类,如int float complex ...?

2 个答案:

答案 0 :(得分:4)

与文档说的一样,

eval将参数计算为python代码。它可以是任何有效的python表达式。它可以是函数,类,值,循环,恶意......

经验法则:除非别无选择,否则请勿使用。如果没有其他选择,请不要使用它。

答案 1 :(得分:0)

eval()将解释用户在input()期间输入的内容。因此,如果用户在本地人中键入x+1 x等于1,则会输出2(见下文)。 文档摘录:

  

表达式参数被解析并作为Python表达式(技术上讲,条件列表)使用全局和本地字典作为全局和本地命名空间进行评估。

>>> x = 1
>>> print eval('x+1')
2

它可能很危险,因为用户可以键入他想要的任何内容,例如......某些Unix命令。 不要使用,除非你知道自己在做什么(即使这样,也会导致严重的安全漏洞)。