How to Print on the Same Line in Python: Print and Write
Tags: python, beginners, testing, programming
Published: 2019-09-13 14:04:31

As someone who teaches a lot of beginner programming content, I occasionally stumble upon questions like “how do you print on the same line in Python?” Luckily, I have an answer to that!

**In short, there are two main ways to print on the same line in Python. For Python 2, use the following print syntax: `print "Williamson",`. For Python 3, use the following print syntax: `print("Providence", end="")`. Otherwise, check out the remainder of the article for a backwards compatible solution.**

## Problem Introduction

In many programming languages, printing on the same line is typically the default behavior. For instance, Java has two command line print functions:

```java
System.out.print();
System.out.println();
```

As you can probably imagine, the default `print` function in Java is going to print without a newline character. In contrast, the `println` function is going to behave much like the `print` function in Python. Specifically, it’s going to print whatever string you provide to it followed by a newline character (i.e. `\n`).

Of course, if the `print` function in Python automatically prints a newline character with each call, then there’s no way to get the Java `print` behavior, right? Luckily, that’s not true! Otherwise, I wouldn’t have anything to write about out.

## Solutions

In order to print on the same line in Python, there are a few solutions. Unfortunately, not all of the solutions work in all versions of Python, so I’ve provided three solutions: one for Python 2, another for Python 3, and a final solution which works for both.

### Print on the Same Line The Old Way

When I was searching for solutions to this problem, I found a lot of material on Python 2 which is quickly phasing out (I hope). That said, I felt this solution would be helpful to anyone still rocking it.

At any rate, when you print something in Python 2, the syntax is the same as Python 3, but you leave out the parentheses:

```python
print "Live PD"
```

Of course, in both cases, the default behavior is to print with a newline. As a result, we’ll need to add a clever bit of syntax—a comma:

```python
print "Live PD",
```

Now, the print function should exclude the newline. However, **this solution will add an extra space to the end of the string**. Also, you may notice that this solution does not print immediately. If that happens, you can make a call to `sys.stdout.flush()`.

### Print on the Same Line with the Write Function

Fortunately, we can bridge the gap between Python 2 and 3 using a function out of the `sys` library: `write`. This functions works just like the `print` function, but there’s no implicit newline:

```python
import syssys.stdout.write("Breaking Bad")
```

Again, since there is no newline, you may need to flush the buffer to see any results:

```python
import sys
sys.stdout.write("Breaking Bad")
sys.stdout.flush()
```

In either case, this solution will get the job done in both versions of Python.

### Print on the Same Line the New Way

In Python 3, `print` is a standard function. As a result, it has additional opportunities for parameters. In particular, there is a keyword argument called `end` which defaults to some newline character. You can easily change it as follows:

```python
print("Mob Psycho 100", end="")
```

And, that’s it! Instead of the string ending in a newline, it will end in an empty string. Of course, this solution comes with the same caveat as the other previous two solutions: you may need to flush the buffer.

## Performance

As always, I like to take a look at all the solutions from the point of view of performance. To start, I usually store each solution in a string. To avoid excessive printing during the test, I’ve chosen to write empty strings:

```python
setup="""
import sys
"""

write_solution = """
sys.stdout.write("")
"""

print_solution = """
print("", end="")
"""
```

Unfortunately, I was unable to test the Python 2 solution on my system, so feel free to share your results in the comments. At any rate, I like to use the `timeit` library for a quick and dirty performance test:

```python
>>> import timeit
>>> min(timeit.repeat(stmt=write_solution, setup=setup, repeat=10))
0.20978069999999605
>>> min(timeit.repeat(stmt=print_solution, setup=setup, repeat=10))
0.5292953999999952
```

Clearly, the `print` function has quite a bit of overhead. In other words, if performance matters, go the `write` route. Otherwise, `print` works great!

## A Little Recap

Well, that’s it for this one. Check out the code block below for a list of all the solutions:

```python
# Python 2 only
print "Live PD",

# Backwards compatible (also fastest)
import sys
sys.stdout.write("Breaking Bad")

# Python 3 only
print("Mob Psycho 100", end="")
```

As always, if you know any other ways to print on the same line in Python, let us know in the comments. In the meantime, why not grow your Python knowledge with the following articles:

- [How to Invert a Dictionary in Python](https://therenegadecoder.com/code/how-to-invert-a-dictionary-in-python/)
- [How to Check if a List in Empty in Python](https://therenegadecoder.com/code/how-to-check-if-a-list-is-empty-in-python/)

If you liked this article or any of the ones I listed, consider sticking around long term by [becoming a member of the community](https://www.patreon.com/TheRenegadeCoder) or [hopping on the mailing list](https://newsletter.therenegadecoder.com/). Otherwise, I appreciate the support. Thanks for stopping by!

The post [How to Print on the Same Line in Python: Print and Write](https://therenegadecoder.com/code/how-to-print-on-the-same-line-in-python/) appeared first on [The Renegade Coder](https://therenegadecoder.com).