Previous to version 3.6 we had % and str.format(). A string can be assigned from a format.
>>> wild = 'fox'
>>> tame = 'dog'
>>> my_string = "A quick brown {} jumps over the lazy {}".format(wild, tame)
>>> my_string
'A quick brown fox jumps over the lazy dog'
>>> other_string = "A quick brown %s jumps over the lazy %s" % (wild, tame)
>>> other_string
'A quick brown fox jumps over the lazy dog'
>>>
Python 3.6 and newer have f-strings…
>>> f_string = f"A quick brown {wild} jumps over the lazy {tame}"
>>> f_string
'A quick brown fox jumps over the lazy dog'
>>>
Note how f-strings use direct interpolation. The other two use placeholders. Check with pyformat for more information.