In this tutorial I will share different examples to concatenate stings in Python. You can choose either of the methods explained here but in case you have a long queue in some loop then you may want to choose wisely without impacting the performance.
I will be using following Python version to demonstrate all the examples:
~]# python3 -V
Python 3.6.8
Method-1: Concatenate strings using .format()
You can learn more about this method of formatting at 10+ simple examples to use Python string format in detail. Python 3.x uses a different formatting system, which is more powerful than the system that Python 2.x uses.
Example-1: Using default placeholders
You can just place open and closed curly braces {} where you want to
place your string and using .format you can define the variables to be
placed in the respective order.
#!/usr/bin/env python3
var1 = 'Python'
var2 = 'fun'
print('Let us learn {}, it is absolutely {}!'.format(var1, var2))
Here var1 and var2 will be added in the provided order i.e. first
{} will be filled by var1 while the next {} will be filled by
var2.
Output:

Example-2: Using positional arguments
Now the above example can be confusing when you have to concatenate multiple strings. So we can use positional arguments to define the position of each variable string.
#!/usr/bin/env python3
var1 = 'Python'
var2 = 'fun'
print('It is absolutely {1} to learn {0}!'.format(var1, var2))
Here we have defined the position {0} which will be for the first
variable while {1} for the second variable.
Output:

Example-3: Using f-strings
Starting with Python 3.6 now we can use f-strings which is the
recommended way of formatting strings. If you are familiar with the YAML
concept of defining variables then it is almost similar where we place
the variable name inside {} and then call the same inside f''.
Following example will help you understand this more clearly:
#!/usr/bin/env python3
var1 = 'Python'
var2 = 'fun'
print(f'Let us learn {var1}, it is absolutely {var2}!')
Here if you notice
<span style="color: #ffcc99;">f</span>'Let us learn {var1}, it is absolutely {var2}!'
where we have defined the entire sentence under f'' while the
individual variables are defined under {}. So this is much more
cleaner and simpler compared to earlier format strings.
Output:

Method-2: Using + operator
In terms of performance, this method is most recommended to concatenate strings. Although you have to handle any extra spaces inside the string quotes. For example here I have two strings defined with separate variables.
Example-1: Concatenating strings
In this example we combine two strings using + operator.
#!/usr/bin/env python3
var1 = 'Python'
var2 = 'fun'
# I have handled extra whitespace under quotes and then
# concatenating strings using + operator
print('Let us learn ' + var1 + ', it is absolutely ' + var2 + '!')
If you observe, I have added an extra space 'Let us learn ' to handle
the extra whitespace as + operate will concatenate the string in between
the text but it will not add extra space unless the variable is defined
in that way.
Output:

Example-2: Concatenating string with integers
Here I have a similar example but var2 is an integer instead of a
string. So if we try to concatenate these two variables using +
operator as we did earlier:
#!/usr/bin/env python3
var1 = 'Deepak'
var2 = 100
print('Hey ' + var1 + ', Can you lend me a ' + var2 + ' bucks?')
We are getting an TypeError “TypeError: must be str, not int” i.e.
because + operator can only be used to concatenate strings. So we have
to modify our code as following:
#!/usr/bin/env python3
var1 = 'Deepak'
var2 = 100
print('Hey ' + var1 + ', Can you lend me a ' + str(var2) + ' bucks?')
Now the script has run successfully:

Method-3: Append strings using += operator
If you are coming from shell script background then you must be familiar
with += operator which is used in the same way as used with shell i.e.
to append or add content to existing variable. This is another
recommended method to concatenate strings with less performance impact.
Example-1: Join two block of sentences
In this example I have two variables with strings and I want to join
both these strings. So I am using += operator to add the content of
var2 with a whitespace in var1 variable.
#!/usr/bin/env python3
var1 = 'First block of sentence.'
var2 = 'Second block of sentence.'
# Append extra whitespace and var2 into var1
var1 += ' ' + var2
print(var1)
Output:

Example-2: Using for loop
This scenario would make more sense and will be used more often. Here we
have taken a simple example where we iterate over a range value of 5
and then append each digit into our variable str1
#!/usr/bin/env python3
# Define variable with empty string value
str1 = ''
for i in range(5):
# append strings to the variable
str1 += str(i)
# print variable str1 content
print(str1)
Output:

Method-4: Concatenate strings using .join()
We can also use str.join() method to join two strings using a
delimiter. The join() method is called on a string, gets passed a list
of strings, and returns a string. A TypeError will be raised if there
are any non-string values in iterable, including bytes objects.
#!/usr/bin/env python3
var1 = 'First block of sentence'
var2 = 'Second block of sentence'
# Join both var1 and var2 using fullstop
# as the separator
out = ". ".join((var1, var2))
print(out)
# Join both var1 and var2 using comma
# as the separator
out = ", ".join((var1, var2))
print(out)
Output:

Method-5: Concatenate strings using % operator
We must NOTE that % string operator is
deprecated and will be
removed in higher Python release so I would recommend you to use other
methods which I have explained in this tutorial for string
concatenation. For the sake of reference I will share an example to use
% operator:
#!/usr/bin/env python3
var1 = 'Python'
var2 = 'fun'
# Combining strings using % operator
print('Let us learn %s, it is absolutely %s!' % (var1, var2))
Here %s will be replaced by the mapping string which we have shared
with % (var1, var2).
Output:

Summary
In this Python tutorial we learned about different methods using which we can concatenate strings. I have shared multiple examples for individual methods which can help you understand the basics so you can implement them accordingly in your code. You can also follow stackoverflow forum where this topic is discussed in depth in terms of performance impact for different methods and the recommended ones.


