Восстановил старый код и попытался реорганизовать его в соответствии со стандартами Python7 и 3.% s форматирование предшествует + оператору при объединении двух строк перед форматированием
Многие строковые операции использовали синтаксис "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 рассматривает добавление в качестве операции второй руки функции слияния в строку?
Сегодня я узнал! Не OP, но спасибо в любом случае :-) – Gormador
Делает общий смысл, когда вы слышите это вслух. Ссылка отличная кстати, пригодится по многим причинам. Спасибо! – Torxed