Se você tiver um código repetitivo que gere strings, você pode reduzir bastante o boilerplate usando a função locals () , que retorna um dicionário com as variáveis ​​locais atuais em uma função, e o método format () , que é o método preferencial atual para a formatação de strings .
Como exemplo, considere a seguinte função:
def generate_address(street, number, district, city, state, zipcode):
address = """
{street}, {number} - {district}
{city} - {state} {zipcode}
""".format(**locals())
return address