Print Function in Python
The first thing most of the developers would do is to try printing "Hello World" when learning new programming language.
We have run our first python script to print "Hello World, My First Python Script" in our Getting Started with Python post. Have a quick look at this post if you haven't already seen.
We will now see more about print() function in Python.
So, What's more to know about print? Isn't this as simple as passing a message to print?
Yes, one way it is as simple as passing the message in the parameters as an argument and the message would be printed.
In the above script, we have just passed the message to be printed to the print function and it has printed the message to the console.
Okay, everything looks fine? Yes, almost. If we notice, there is a line printed after the message before it actually say 'Process finished with exit code 0'.
Isn't this normal? And, Can we actually print the message without without writing a new line?
Firstly, This is normal and that's how python's print() function supposed to work with default parameters. And, probably that's the way print() function is mostly used in Python.
To the next question, Yes we can print the message without writing a new line, so the message would appear as below.
How do we do this? There are some optional parameters to print() function which would control the way message is printed. Let's have a look at these.
Syntax of print():
print(values, sep, end, file, flush)
Now, let's look at the use of each of these parameters.
values
In the above example, we have used the full text as a single argument. Let's see if we can pass this as two different arguments and how this would be printed.
This has printed messages in the two arguments by separating them with ' '. This is because of the default value on parameter 'sep'.
sep
In the above example, default value on 'sep' was used to separate the data passed in the arguments. Let's now see how this is printed if we pass a value against this parameter.
Separator has now been printed. This becomes handy when we have multiple messages to be printed with a separator. Using 'sep' would avoid having to concatenate all the messages.
The result is printed with new line. This is because of the default value (\n) on 'end' parameter.
end
Let's see how the result would be printed if we pass different value to parameter 'end'.
In the above example, we are passing '.' as separator. The result should now be printed with '.' at the end and no new lines should be printed.
'file' parameter accepts an object with write method. Default value for this is 'sys.stdout'. Message is printed to stdout if we use the default.
'stdout' has write method and prints the message where ever the python script is running (like command line or IDE), in the examples we are using, it is printed on IDE.
We'll see more on this parameter later with some examples.
flush
Before we actually see what flush does, we go back little to the 'end' parameter. Default value for 'end' is new line.
- When print() is executed with default values, message is printed immediately (flushed) as soon as print statement is run.
- When print() is executed with blanks/null for 'end' parameter, message isn't immediately printed after executing the print statement.
Why is that? Python would store the message in the buffer and prints when it reaches new line.
In the second scenario, end of the message is blanks/null, so python retains message in the buffer and prints when the program is ended or when the new line is printed further down in the program.
How do we deal with this? If the message is to be printed immediately after print statement without having to print new line, 'flush' would be helpful.
passing 'True' (flush = True) would print the message immediately. It is better explained with an example.
In the above scenario, "Hello World" isn't printed until print of "My First Python Statement." is executed.
This can be handled by using flush parameter.
In Line - 2, we have mentioned 'flush=True', this would prints the message 'Hello World" immediately without having to wait for the next statement.
If you have any Suggestions or Feedback, Please leave a comment below or use Contact Form.
Comments
Post a Comment