Introduction
In transitioning from Python 2 to Python 3, one of the significant changes developers face is the modification of the print
statement into a print()
function. This tutorial explores what this change entails and provides best practices for using print()
effectively in both versions of Python.
The Evolution of print
Python 2: print
as a Statement
In Python 2, print
was treated as a statement rather than a function. This meant you could write:
print "Hello, World!"
This syntax worked fine in Python 2.x but posed challenges when migrating to Python 3.
Python 3: print
as a Function
Python 3 introduced significant improvements and changes to make the language more consistent and powerful. One such change was converting print
from a statement to a function:
print("Hello, World!")
Why the Change?
- Consistency: Treating
print
as a function aligns it with other built-in functions in Python. - Flexibility: The function form allows for more advanced features like specifying separators and end characters, making it easier to control output formatting.
SyntaxError: Missing Parentheses
If you try using the old syntax in Python 3:
print "Hello, World!"
You’ll encounter a SyntaxError
:
SyntaxError: Missing parentheses in call to 'print'
This error indicates that Python expected a function call (which requires parentheses) rather than a statement.
Best Practices for Using print()
Basic Usage
In Python 3, the simplest use of print()
is as follows:
print("Hello, World!")
Printing Multiple Items
You can print multiple items separated by spaces using commas:
name = "Alice"
age = 30
print(name, age) # Output: Alice 30
For custom separators:
print("apple", "banana", "cherry", sep=" - ")
# Output: apple - banana - cherry
Controlling End Characters
By default, print()
ends with a newline. To change this behavior, use the end
parameter:
for i in range(3):
print(i, end=', ')
# Output: 0, 1, 2,
Backward Compatibility with Python 2
If you need your code to be compatible with both Python 2 and 3, use the following import at the start of your script:
from __future__ import print_function
This makes print()
available as a function in Python 2.
Advanced Use Cases
Argument Splatting
The function form allows splatting arguments to dynamically unpack lists or tuples into positional arguments:
items = ['apple', 'banana', 'cherry']
print(*items, sep=' + ')
# Output: apple + banana + cherry
Redefining print
A significant advantage of making print
a function is that you can redefine it easily to customize behavior without altering the core syntax. This would be impossible if print
were still just a statement.
Conclusion
Transitioning from Python 2 to 3 requires adapting to changes like those in the print()
function, but these changes bring benefits in consistency and functionality. By understanding and embracing these modifications, you can write cleaner and more efficient code that is forward-compatible with future versions of Python.