@Zellily

Почему в Питоне нельзя складывать строки?

Я пишу на Питоне для себя, когда на работе требуется быстро сгенерить из одного файла другой и т.п. Случайно попался на глаза вопрос, где человек показал пример своего кода. Он пишет так:
print("\""+name+"\" - ERROR! File not found in \""+input_path+"\"")
Ему отвечают, что так нельзя делать:
"строки так складывать тоже нельзя у Лутца об этом где-то в сам начале написано. "
"Экранирование символов в строках и подстановка параметров показывает отсутствие опыта."

Почему нельзя? Чем это плохо?
  • Вопрос задан
  • 711 просмотров
Пригласить эксперта
Ответы на вопрос 3
aRegius
@aRegius
Python Enthusiast
Можно, но это некрасиво/плохо читаемо. Много лишнего "шума": плюсы, кавычки, экранирование, все это вперемешку с переменными, а значит более error prone...

Судите сами:
>>> name = "NAME"
>>> input_path = "INPUT_PATH"

>>> print("\""+name+"\" - ERROR! File not found in \""+input_path+"\"")
"NAME" - ERROR! File not found in "INPUT_PATH"

# не лучше ли, "мальчики-налево, девочки-направо" ?
>>> print('"{0}" - ERROR! File not found in "{1}"'.format(name, input_path))
"NAME" - ERROR! File not found in "INPUT_PATH"


Плюс ко всему, допустим, вам нужно добавить пусть даже всего одну переменную между словами "File" и "not". Ну, к примеру, пусть еще раз имя ненайденного файла name. В приведенном вами варианте, мы еще больше "устрашим" себя и своих коллег кодом, осознание которого требует нечеловеческой концентрации:
>>> print("\""+name+"\" - ERROR! File \""+name+"\" not found in \""+input_path+"\"")
"NAME" - ERROR! File "NAME" not found in "INPUT_PATH"


В то время как применяя метод format() все, что нам нужно - добавить дополнительную пару curly braces:
>>> print('"{0}" - ERROR! File "{0}" not found in "{1}"'.format(name, input_path))
"NAME" - ERROR! File "NAME" not found in "INPUT_PATH"


Согласитесь, выгода очевидна.
Ответ написан
@screen_sailor
The Screen Is Not Enough
Наверно, они предпочитают через метод format писать.
print('We are the {} who say "{}!"'.format('knights', 'Ni'))
Ответ написан
NeiroNx
@NeiroNx
Программист
Не надо учится плохому. Надо сразу писать программы правильно. Используя "Var={}".format(var) или "Var=%s"%(var)
Так:
print('"%s" - ERROR! File not found in "%s"'%(name,input_path))
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы