DEV Community

Cover image for Taming the Python `print()` Function: A Newbie's Guide to `end` and `sep`
Rakesh Ranjan
Rakesh Ranjan

Posted on

Taming the Python `print()` Function: A Newbie's Guide to `end` and `sep`

Hey everyone! It's me again, still on my Python learning journey and constantly finding little nuggets of wisdom that make me go "Aha!" Today, I want to share one of those moments that really helped me feel like I was getting more control over my code's output.

The Struggle: When print() Just Doesn't Cooperate

When I first started writing Python, the print() function was my best friend. Need to see a variable's value? print() it! Debugging a loop? print() the iteration number! But as I started to build more complex things, like trying to list items from a shopping cart, print() started to feel a bit... rigid.

I was trying to output a series of items, perhaps wanting them all on one line, separated by commas. Or maybe I had two print() statements that I really wanted to appear on the same line. But no matter what I did, print() insisted on either putting an annoying space between everything or, even worse, throwing a new line after every single call! It was frustrating, and for a moment, I thought I'd have to learn complex string formatting just to get basic output control.

My Perspective & The Solution: Hello, end and sep!

I dug around a bit (which, by the way, is becoming my favorite pastime with Python!) and discovered two incredibly useful, yet optional, arguments for the print() function: sep and end. These are game-changers for customizing your output without much fuss.

Think of it this way:

  • sep (separator): This argument controls what character (or string) is placed between the items you pass to print(). By default, print() uses a single space (' ') to separate items. But you can change it to a comma, a dash, nothing at all, or anything you like!

  • end (end of line): This argument determines what character (or string) is added after all the items have been printed. By default, print() adds a newline character ('\n'), which is why each print() call usually starts on a new line. Want to keep things on the same line? Change end to an empty string ('') or even a custom message!

Once I understood these, it was like a lightbulb went off. Suddenly, I could make print() behave exactly how I wanted it to, which is such a satisfying feeling as a beginner!

The Code Snippet: Seeing end and sep in Action

Let's imagine we're building a little shopping cart application. Here's how sep and end can make your output much cleaner:

shopping_cart = ["milk", "eggs", "bread", "cheese"]

print("--- Default print() behavior ---")
print("Your items are:")
print(shopping_cart[0], shopping_cart[1], shopping_cart[2])
# print outputs:
# --- Default print() behavior ---
# Your items are:
# milk eggs bread

print("\n--- Using 'sep' for custom separators ---")
print("Your shopping list:", shopping_cart[0], shopping_cart[1], shopping_cart[2], shopping_cart[3], sep=", ")
print("Another way:", shopping_cart[0], shopping_cart[1], sep=" + ")
# print outputs:
# --- Using 'sep' for custom separators ---
# Your shopping list: milk, eggs, bread, cheese
# Another way: milk + eggs

print("\n--- Using 'end' to control newlines ---")
print("Checking out items:", end=" ") # Notice the space at the end of the end string
print(shopping_cart[0], end="...")
print("Confirmed!")
# print outputs:
# --- Using 'end' to control newlines ---
# Checking out items: milk...Confirmed!

print("\n--- Combining 'sep' and 'end' ---")
print("Final review:", shopping_cart[0], shopping_cart[1], shopping_cart[2], sep=" | ", end=" -- All Good!\n")
print("Proceed to payment.")
# print outputs:
# --- Combining 'sep' and 'end' ---
# Final review: milk | eggs | bread -- All Good!
# Proceed to payment.
Enter fullscreen mode Exit fullscreen mode

The "Gotcha": A Couple of Beginner Traps

  1. sep only works between multiple arguments: If you only pass one item to print(), sep won't do anything because there's nothing to separate. For example: print("Hello", sep="-") will just print Hello.
  2. Watch your end string carefully: It completely replaces the default newline. If you want a space and then keep things on the same line, you need to explicitly put that space in your end argument, like end=" ". Otherwise, it will butt right up against the next print() output! I made this mistake more than once, leading to some weird-looking concatenated text.

Learning these little customizations has been fantastic. It really shows how flexible Python is, even at the most basic levels. Keep exploring, fellow beginners, there's so much more to discover!

Top comments (0)