Of course! In Python, converting an integer to a string is a very common task. The primary and most recommended way to do this is by using the built-in str() function.

Here’s a complete guide covering the best method, other alternatives, and common use cases.
The Best and Most Common Method: str()
This is the simplest, most readable, and most Pythonic way to convert an integer (or any other object) to a string.
How it Works
You simply pass the integer variable to the str() function, and it returns a new string representation of that number.
Example
# The integer
my_int = 123
# Convert the integer to a string
my_string = str(my_int)
# Check the type and the value
print(f"The type of my_string is: {type(my_string)}")
print(f"The value of my_string is: '{my_string}'")
# You can now use string operations on it
print(f"The length of the string is: {len(my_string)}") # Output: 3
print(f"Concatenating: 'ID-' + my_string gives 'ID-123'")
Output:

The type of my_string is: <class 'str'>
The value of my_string is: '123'
The length of the string is: 3
Concatenating: 'ID-' + my_string gives 'ID-123'
Alternative Method: f-Strings (Formatted String Literals)
f-strings, introduced in Python 3.6, are a powerful and modern way to embed expressions inside string literals. They are excellent for formatting and are often used when you need to convert a number to a string to place it inside another string.
How it Works
You prefix a string with an f or F and place the variable (or any expression) inside curly braces .
Example
my_int = 987
# Using an f-string to create a new string
my_string = f"{my_int}"
# Check the type and value
print(f"The type of my_string is: {type(my_string)}")
print(f"The value of my_string is: '{my_string}'")
# A more common use case: embedding the number in a sentence
message = f"The error code is: {my_int}"
print(message)
Output:
The type of my_string is: <class 'str'>
The value of my_string is: '987'
The error code is: 987
Alternative Method: The .format() Method
This was the standard way to format strings before f-strings became popular. It's still widely used and good to know. It uses curly braces as placeholders in a string template.

How it Works
You call the .format() method on a string template and pass the integer(s) as argument(s).
Example
my_int = 456
# Using the .format() method
my_string = "{}".format(my_int)
# Check the type and value
print(f"The type of my_string is: {type(my_string)}")
print(f"The value of my_string is: '{my_string}'")
# A more complex example
message = "The value is {} and its type is {}.".format(my_int, type(my_int).__name__)
print(message)
Output:
The type of my_string is: <class 'str'>
The value of my_string is: '456'
The value is 456 and its type is int.
Alternative Method: The format() Built-in Function
This is very similar to the .format() string method but is a standalone function call. It's less common for simple conversions but is part of the formatting family.
Example
my_int = 789
my_string = format(my_int)
print(f"The type of my_string is: {type(my_string)}")
print(f"The value of my_string is: '{my_string}'")
Output:
The type of my_string is: <class 'str'>
The value of my_string is: '789'
Summary: Which One Should You Use?
| Method | Example | When to Use |
|---|---|---|
str() |
s = str(123) |
Best for simple, direct conversion. This is your default choice. It's clear, concise, and does exactly one thing. |
| f-String | s = f"{123}" |
Excellent for embedding numbers into strings. It's modern, fast, and highly readable. Use this when you need to format strings with variables. |
.format() |
s = "{}".format(123) |
A good, general-purpose formatting method. Use if you're on an older version of Python (pre-3.6) or if you need more complex formatting logic that f-strings don't handle as elegantly. |
format() |
s = format(123) |
Less common for simple conversion. Useful in more advanced formatting scenarios where you might pass the format specifier as a variable. |
Important: What About int() to String in Other Bases?
If you need to convert an integer to a string representing its value in a different base (like binary, octal, or hexadecimal), you can use the format() function or an f-string with a format specifier.
- Binary (base 2): Use
b - Octal (base 8): Use
o - Hexadecimal (base 16): Use
x
Example
my_int = 255
# Convert to binary string
binary_str = format(my_int, 'b')
print(f"Binary: {binary_str}") # Output: Binary: 11111111
# Convert to octal string
octal_str = format(my_int, 'o')
print(f"Octal: {octal_str}") # Output: Octal: 377
# Convert to hexadecimal string (lowercase)
hex_str = format(my_int, 'x')
print(f"Hex (lower): {hex_str}") # Output: Hex (lower): ff
# Using f-strings (uppercase hex)
hex_str_upper = f"{my_int:X}"
print(f"Hex (upper): {hex_str_upper}") # Output: Hex (upper): FF 