Tor*_*xed 3 python string-formatting python-2.x
复活了一些旧代码并尝试重构它以匹配Python7和3标准.
很多字符串操作都使用了"Something was %s in here" % "merged"语法.
所以我开始交换它的过程.format("merged"),工作得很好,直到弹出这一行:
cmd = 'cat %s[0-9] | compress.sh - | ' % filename[:-2] + cmd
Run Code Online (Sandbox Code Playgroud)
现在我以为我彻底看了这个并将它转换成:
cmd = 'cat {}[0-9] | compress.sh - | '.format(filename[:-2] + cmd)
Run Code Online (Sandbox Code Playgroud)
看到命令行是建立在进一步的最后|并没有真正触发任何警告标志.
然而,后来我发现正确的转换应该有很多头部刮擦和调试:
cmd = 'cat {}[0-9] | compress.sh - | {}'.format(filename[:-2], cmd)
Run Code Online (Sandbox Code Playgroud)
我知道你可能应该在"%s" % ("x",) + cmd这里做,但从来没有,这就是我留下的代码.
我问过同事和朋友,他们都假设了同样的事情:"我猜数学运算符先于函数运算符加入字符串".
显然情况并非如此,我想知道,"%s" % "x"之前有什么理由+ "y"吗?
从技术上讲,对我来说,在任何函数调用之前,加法运算(纯粹说数学明智)都应该进行?
为什么Python2将加法视为合并为字符串函数的二手操作?
| 归档时间: |
|
| 查看次数: |
37 次 |
| 最近记录: |