Saturday, December 12, 2020

Python Print Function - What parameters does it accept?

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. 

print function in python

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. 

print in python
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.

print in python

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.

ParameterMandatory/
Optional
Description
valuesMandatoryActual message/data to be printed. This can be a single value or multiple values.
sepOptionalSeparator, If multiple values are passed, this parameter would be used to determine how the values are separated. Default value is ' ' (Blanks)
endOptionalEnd value, Specify what needs to be printed at the end. Default value is '\n' (new line)
fileOptionalObject with write method. default value is stdout.
flushOptionalBoolean value, True - if the output is flushed, False - if the output is buffered. Default value is ' ' (Blanks)

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.

print in python

We have passed two separate arguments to be printed. Let's see how this is printed. 

print in python

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. 

print in python

We are now passing another parameter 'sep'. Let's see how this is printed. 

print in python

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'. 

print in python

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. 

print in python

file

'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.

print in python

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.

print in python

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.

No comments:

Post a Comment

Different Ways of Sorting Data in a List - Python

Sorting Data in a List List is a collection of data (of different data types), much like an array. Like any data structure or data set, dat...