gpt4 book ai didi

python - 在格式化之前连接两个字符串时,%s 格式先于 + 运算符

转载 作者:太空宇宙 更新时间:2023-11-03 14:08:53 24 4
gpt4 key购买 nike

恢复了一些旧代码并尝试重构它以匹配 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,但无论如何,这是我留下的代码。

我问过同事和 friend ,他们都假设了同样的事情:“我猜数学运算符在连接字符串的函数运算符之前”

显然不是这种情况我想知道,"%s"% "x" 出现在 + "y" 之前是不是有原因?
从技术上讲,加法操作(这里纯粹是数学方面的)应该在任何函数调用之前进行?

为什么Python2把加法当成一个二手操作合并成一个字符串的功能?

最佳答案

因为 % 字符串格式化运算符与 % 余数或取模运算符共享优先级,后者比 + 加法运算符绑定(bind)得更紧密。按优先顺序查看所有运算符 here

关于python - 在格式化之前连接两个字符串时,%s 格式先于 + 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40678942/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com