Guido van Rossum(Python的发明者)在an old blog post中亲自回答了这个问题。
基本上,他承认这在理论上是可能的,但任何提议的解决方案都是非Python式的:
"But the complexity of any proposed solution for this puzzle is immense, to me: it requires the parser (or more precisely, the lexer) to be able to switch back and forth between indent-sensitive and indent-insensitive modes, keeping a stack of previous modes and indentation level. Technically that can all be solved (there's already a stack of indentation levels that could be generalized). But none of that takes away my gut feeling that it is all an elaborate Rube Goldberg contraption."
请看以下内容:
这是一个返回
(y, [1,2,3])
的lambda吗(因此map只获取一个参数,从而导致错误)?还是返回y
?或者是语法错误,因为新行上的逗号放错了地方?Python怎么知道你想要什么?在parens中,缩进与python无关,因此不能明确地使用多行。
这只是一个简单的例子,可能还有更多的例子。
Guido van Rossum(Python的发明者)在an old blog post中亲自回答了这个问题。
基本上,他承认这在理论上是可能的,但任何提议的解决方案都是非Python式的:
这通常是非常难看的(但有时替代方案更难看),因此解决方法是生成一个大括号表达式:
它不会接受任何任务,所以你必须事先准备好数据。 我发现这个有用的地方是PySide包装器,在这里您有时会有短的回调。编写额外的成员函数将更加难看。通常你不需要这个。
示例:
相关问题 更多 >
编程相关推荐