- 主题:[0xfor x in (1,2,3)]
结果是
[15]
https://twitter.com/nedbat/status/1382027078816653319
--
FROM 101.98.83.*
已经有人提了:
https://bugs.python.org/issue43833
另外在 ipython 下语法高亮是“正确”的……
【 在 ilovecpp (cpp) 的大作中提到: 】
: 应该被当作bug改掉。
: 引号,括号等符号后面不需要空格可以理解。
: 但是1or被当作1 or这个看不出有什么好。
: ...................
--
FROM 101.98.83.*
变量不能以数字开头是废话,你倒是说个能用数字开头当变量名的语言瞧瞧?
lexer 写成这德行只是偷懒而已,就跟 r'' 不能用 \ 结尾一样,根本毫无道理可言
【 在 likely (thinker) 的大作中提到: 】
: Python变量名不能以数字开始,所以这是个feature而不是bug...
: 就象很早以前的浏览器兼容不规范的HTML语法一样,这么宽容的词法解析不是好事啊
--
FROM 122.59.26.*
我来给大家讲个笑话:python 不同版本间的兼容性
【 在 ilovecpp (cpp) 的大作中提到: 】
: 当前lexer这个地方肯定是故意的。它0x后面不直接跟0-f会报错,0x后面的_不直接跟0-f也会报错,但其它情况就不报错了。
: 当初可能是偷懒,现在就是在向后兼容。
--
FROM 122.59.26.*
js 并没有 raw string 的语法啊,你指的是哪个?
c# 里 @"" 基本一样的用法,人家也没不能用 \ 结尾
【 在 vonNeumann (劣币驱逐良币 | 少灌水) 的大作中提到: 】
: js 的 raw string 也是这个德行。。。
--
FROM 122.59.26.*
这个比法不太公平啊……
foo`template string` 并不改变 `` 本身既支持 escaping 又支持 interpolation 的语法,而 String.raw 和其它的函数也没有任何区别,并不起到改变语义的作用
c# 的甚至还支持 @"foo""bar" == "foo\"bar",表达能力非常完整
反过来看 py,就真的是 raw string,什么 escaping 啊完全不支持,而且 r 跟引号之间还不能有空格。就这么一个表达能力极其有限的文法,还不支持 \ 结尾,除了懒以外,真的是完全找不到任何理由了。而且说实话,也真的实在是太懒了,都知道实现起来一点儿都不复杂。
【 在 vonNeumann (劣币驱逐良币 | 少灌水) 的大作中提到: 】
: 我指的是 String.raw
: String.raw`\r\n` === '\\r\\n'
: String.raw`\` --> Unexpected end of input
: ...................
--
FROM 122.59.26.*