tgoop.com/prog_way_blog/55
Last Update:
Форматирование строк и что такое интерполяция.
Так, раз уж у меня такое вдохновение пописать про Python, то я не вижу смысла останавливаться. Сегодня расскажу вам про возможные варианты форматирования строк, об их различиях и так далее.
Для удобства давайте обозначим изначальные данные:name = "Денис"
В результате ожидаем строку: "Привет, я Денис, мне 19 лет."
age = 19
Чтож, начнём с самого простого способа форматирования - это обычная конкатенация. Кто не знал, во многих языках можно складывать строки при помощи оператора "+". В таком случае нужную строку получим так:result = "Привет, я " + name + ", мне " + age + " лет."
Второй возможный способ - процентное форматирование. Достаточно старый метод, который появился уже давно, и в нашем случае нужную строку мы получили бы так:result = "Привет, я %s, мне %d лет." % (name, age)
Не знаю как вам, а мне такой способ ужасно не нравится. Он не наглядный, да ещё и типизация переменной просит постоянно запоминать непонятные обозначения. В общем, не рекомендую.
Третий способ - с использованием метода строки format()
Классный метод, но не наглядный, когда в строку нужно вставить, ну, например, 20 переменных. В нашем случае результат будет выглядеть так:result = "Привет, я {}, мне {} лет.".format(name, age)
Обращу ваше внимание на то, что можно аргументы задавать не позиционно, а именовано, то есть: result = "Привет, я {name}, мне {age} лет.".format(age=age, name=name)
Тут мы аргументы подаём не в том порядке, но всё отлично работает.
Ну и наконец самый любимый мной да и всеми, надеюсь, способ - это f-строки, или же интерполяция. Интерполяция - это подмена шаблона в строке на какую-то переменную, если своими словами. На практике это выглядит так:result = f"Привет, я {name}, мне {age} лет."
Чем-то напоминает именованный способ из прошлого примера, но без грязной конструкции после строки. Но более того, этот метод крайне функционален, ведь внутри себя он поддерживает различные операции и вызовы функций. То есть запись типа:result = f"Привет, я {name.upper()}, мне {_getAge(name)} лет."
Вполне нормально считается и выдаст нужный результат.
Ну хорошо, даже отлично. Но как вы думаете, какой вариант справляется эффективнее по времени? Достаточно нетривиальный вопрос, на который мы с товарищем недавно спорили больше получаса. График вы можете увидеть на прикрепленной к посту фотографии.
Спасибо за прочтение, это важно для меня ❤️
BY progway — программирование, IT

Share with your friend now:
tgoop.com/prog_way_blog/55