为什么eval函数不能与\ r \n一起使用,而是使用\n.例如eval("for i in range(5):\ r \n print'hello'")不起作用eval("for i in range(5):\n print'hello'")
我知道没有问题导致使用替换("\ r","")被纠正,但有人知道为什么会发生?
- 编辑 - 哦!对不起,确切地说,我的意思是执行官.回车出现是因为我正在通过POST从HTML textarea中读取(我在Linux机器上).现在很清楚,感谢大家.
你对"工作"有一个奇怪的定义:
>>> eval("for i in range(5):\n print 'hello'")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<string>", line 1
for i in range(5):
^
SyntaxError: invalid syntax
>>>
Run Code Online (Sandbox Code Playgroud)
我不确定你为什么使用eval- 我怀疑你的意思exec.表达式和语句是截然不同Python中的不同实体- eval只用表情交易(裸表达是也发表声明,所以exec可以对付它,以及其它语句).
转向exec并思考作为Python核心提交者的情况,我认为这是一个轻微的错误设计:就像在接受和忽略NEWLINE之前的(冗余的和无用的)空格,制表符和表单提要一样,也应该(就像冗余一样)回车是没用的.我道歉:我想我们从来没有认为,有人可能希望把回车存在-但是,它没有任何更有意义如换页那里,我们接受的是 ...所以我看不出有什么拒绝回车的理由(或其他Unicode非ANSI空格,现在在Python 3中我们接受标识符中的任意Unicode非ANSI字母数字).
如果你关心,请在Python的问题跟踪器上打开一个问题,并且(除非其他委员会不可预见的反对)我认为我可以通过Python 3.2修复它(应该在12到18个月内修复 - 这是一个估计[知情猜测] ],而不是承诺;-).