В настоящее время я использую форматирование строк в своем коде, однако считаю, что я жестко кодирую для отображения повторяющихся переменных. Есть ли более эффективный способ сделать это?
print("Hello this is {} and {} and {} - Hello this is {} and {} and {} ".format(versionP, versionS, versionT, versionP, versionS, versionT))
Результат - тот, который я хочу, но мне нужно повторить это несколько раз, и это может стать утомительным. Есть ли способ записать переменную только один раз?






Вы можете указать позиции, и str.format будет знать, какие аргументы использовать:
a, b, c = 1, 2, 3
string = "This is {0}, {1}, and {2}. Or, in reverse: {2}, {1}, {0}"
string.format(a, b, c)
# 'This is 1, 2, and 3. Or, in reverse: 3, 2, 1'
Вы также можете передать аргументы ключевого слова или распаковать словарь:
a, b, c = 1, 2, 3
string = """This is {versionP}, {versionS}, and {versionT}.
Or, in reverse: {versionT}, {versionS}, {versionP}"""
# string.format(versionP=a, versionS=b, versionT=c)
string.format(**{'versionP': a, 'versionS': b, 'versionT': c})
# This is 1, 2, and 3.
# Or, in reverse: 3, 2, 1
Обратите внимание, что техника со словарем может вызвать исключение, если в словарном словаре нет соответствующих ключей.
Примечание для OP: я преобразовал свой ответ в рабочие примеры, чтобы вы могли сами увидеть, как это работает. Процесс идентичен для вашего варианта использования.
Python 3.6
Я считаю это простым и понятным:
print(f"Hello this is {versionP} and {versionS} and {versionT} -
Hello this is {versionP} and {versionS} and {versionT}")
Вы даже можете использовать методы оценивать внутри f-форматирования или вложенные f-струны
Хороший ответ, но предполагается, что OP имеет python3.6
Хорошая точка зрения. Это будет работать только в версии 3.6 и выше .. Мне нравится ваш ответ со словарем
Это зависит от вашей версии Python. F-струны, предложенные Aaron_ab, доступны начиная с версии 3.6.