Избегайте повторения тех же аргументов в str.format - PullRequest
0 голосов
/ 08 января 2019

В настоящее время я использую форматирование строк в своем коде, однако я обнаружил, что я жестко программирую для отображения повторяющихся переменных. Есть ли более эффективный способ сделать это

print("Hello this is {} and {} and {} - Hello this is {} and {} and {} ".format(versionP, versionS, versionT, versionP, versionS, versionT))

Результат тот, который я хочу, но мне нужно повторить это в нескольких случаях и может стать утомительным. Есть ли способ написать переменную только один раз?

Ответы [ 2 ]

0 голосов
/ 08 января 2019

Python 3,6

Я нахожу это чистым и простым:

print(f"Hello this is {versionP} and {versionS} and {versionT} - 
        Hello this is {versionP} and {versionS} and {versionT}")

Вы можете даже оценивать методы внутри f-форматирования или вложенные f-строки

0 голосов
/ 08 января 2019

Вы можете указать позиции, и 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...