Skip to main content

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.

Comments

Popular posts from this blog

All about READ in RPGLE & Why we use it with SETLL/SETGT?

READ READ is one of the most used Opcodes in RPGLE. As the name suggests main purpose of this Opcode is to read a record from Database file. What are the different READ Opcodes? To list, Below are the five Opcodes.  READ - Read a Record READC - Read Next Changed Record READE - Read Equal Key Record READP - Read Prior Record READPE - Read Prior Equal Record We will see more about each of these later in this article. Before that, We will see a bit about SETLL/SETGT .  SETLL (Set Lower Limit) SETLL accepts Key Fields or Relative Record Number (RRN) as Search Arguments and positions the file at the Corresponding Record (or Next Record if exact match isn't found).  SETGT (Set Greater Than) SETGT accepts Key Fields or Relative Record Number (RRN) as Search Arguments and positions the file at the Next Record (Greater Than the Key value). Syntax: SETLL SEARCH-ARGUMENTS/KEYFIELDS FILENAME SETGT  SEARCH-ARGUMENTS/KEYFIELDS FILENAME One of the below can be passed as Search Arguments. Key Fiel

What we need to know about CHAIN (RPGLE) & How is it different from READ?

CHAIN READ & CHAIN, These are one of the most used (& useful) Opcodes by any RPG developer. These Opcodes are used to read a record from file. So, What's the difference between CHAIN & READ?   CHAIN operation retrieves a record based on the Key specified. It's more like Retrieving Random record from a Database file based on the Key fields.  READ operation reads the record currently pointed to from a Database file. There are multiple Opcodes that start with READ and all are used to read a record but with slight difference. We will see more about different Opcodes and How they are different from each other (and CHAIN) in another article. Few differences to note.  CHAIN requires Key fields to read a record where as READ would read the record currently pointed to (SETLL or SETGT are used to point a Record).  If there are multiple records with the same Key data, CHAIN would return the same record every time. READE can be used to read all the records with the specified Ke

Extract a portion of a Date/Time/Timestamp in RPGLE - IBM i

%SUBDT Extracting Year, Month, Day, Hour, Minutes, Seconds or Milli seconds of a given Date/Time/Timestamp is required most of the times.  This can be extracted easily by using %SUBDT. BIF name looks more similar to %SUBST which is used to extract a portion of string by passing from and two positions of the original string. Instead, We would need to pass a value (i.e., Date, Time or Timestamp ) and Unit (i.e., *YEARS, *MONTHS, *DAYS, *HOURS, *MINUTES, *SECONDS or *MSECONDS) to %SUBDT.  Valid unit should be passed for the type of the value passed. Below are the valid values for each type. Date - *DAYS, *MONTHS, *YEARS Time - *HOURS, *MINUTES, *SECONDS Timestamp - *DAYS, *MONTHS, *YEARS, *HOURS, *MINUTES, *SECONDS, *MSECONDS Syntax: %SUBDT(value : unit { : digits { : decpos} }) Value and Unit are the mandatory arguments.  Digits and Decimal positions are optional and can only be used with *SECONDS for Timestamp. We can either pass the full form for the unit or use the short form. Below i