恢复了一些旧代码并尝试重构它以匹配Python7和3标准。
许多字符串操作使用"Something was %s in here" % "merged"
语法。
所以我开始将这个换成.format("merged")
的过程,工作得很好,直到弹出这一行:
cmd = 'cat %s[0-9] | compress.sh - | ' % filename[:-2] + cmd
现在我以为我彻底看了这个并把它转换成:
cmd = 'cat {}[0-9] | compress.sh - | '.format(filename[:-2] + cmd)
看到命令行是在最后|
的基础上构建的,并没有真正触发任何警告信号。
然而,后来我发现正确的转换应该是:
cmd = 'cat {}[0-9] | compress.sh - | {}'.format(filename[:-2], cmd)
我知道你可能应该在这里做"%s" % ("x",) + cmd
,但是从来没有这么做,这就是我留下的代码。
我问过同事和朋友,他们都假设了同样的事情:“我猜数学运算符先于函数运算符加入字符串”。
显然情况并非如此,我想知道,"%s" % "x"
之前有+ "y"
出现的原因吗?
从技术上讲,对于我来说,添加操作(纯粹在这里说数学方面)应该在任何函数调用之前进行?
为什么Python2将加法视为合并为字符串函数的二手操作?