Online Book Reader

Home Category

Learning Python - Mark Lutz [177]

By Root 1836 0
call; as we’ve seen, this built-in returns a “user friendly” display string for any object.[29] With no arguments at all, the print function simply prints a newline character to the standard output stream, which usually displays a blank line.

The 3.0 print function in action

Printing in 3.0 is probably simpler than some of its details may imply. To illustrate, let’s run some quick examples. The following prints a variety of object types to the default standard output stream, with the default separator and end-of-line formatting added (these are the defaults because they are the most common use case):

C:\misc> c:\python30\python

>>>

>>> print() # Display a blank line

>>> x = 'spam'

>>> y = 99

>>> z = ['eggs']

>>>

>>> print(x, y, z) # Print 3 objects per defaults

spam 99 ['eggs']

There’s no need to convert objects to strings here, as would be required for file write methods. By default, print calls add a space between the objects printed. To suppress this, send an empty string to the sep keyword argument, or send an alternative separator of your choosing:

>>> print(x, y, z, sep='') # Suppress separator

spam99['eggs']

>>>

>>> print(x, y, z, sep=', ') # Custom separator

spam, 99, ['eggs']

Also by default, print adds an end-of-line character to terminate the output line. You can suppress this and avoid the line break altogether by passing an empty string to the end keyword argument, or you can pass a different terminator of your own (include a \n character to break the line manually):

>>> print(x, y, z, end='') # Suppress line break

spam 99 ['eggs']>>>

>>>

>>> print(x, y, z, end=''); print(x, y, z) # Two prints, same output line

spam 99 ['eggs']spam 99 ['eggs']

>>> print(x, y, z, end='...\n') # Custom line end

spam 99 ['eggs']...

>>>

You can also combine keyword arguments to specify both separators and end-of-line strings—they may appear in any order but must appear after all the objects being printed:

>>> print(x, y, z, sep='...', end='!\n') # Multiple keywords

spam...99...['eggs']!

>>> print(x, y, z, end='!\n', sep='...') # Order doesn't matter

spam...99...['eggs']!

Here is how the file keyword argument is used—it directs the printed text to an open output file or other compatible object for the duration of the single print (this is really a form of stream redirection, a topic we will revisit later in this section):

>>> print(x, y, z, sep='...', file=open('data.txt', 'w')) # Print to a file

>>> print(x, y, z) # Back to stdout

spam 99 ['eggs']

>>> print(open('data.txt').read()) # Display file text

spam...99...['eggs']

Finally, keep in mind that the separator and end-of-line options provided by print operations are just conveniences. If you need to display more specific formatting, don’t print this way, Instead, build up a more complex string ahead of time or within the print itself using the string tools we met in Chapter 7, and print the string all at once:

>>> text = '%s: %-.4f, %05d' % ('Result', 3.14159, 42)

>>> print(text)

Result: 3.1416, 00042

>>> print('%s: %-.4f, %05d' % ('Result', 3.14159, 42))

Result: 3.1416, 00042

As we’ll see in the next section, almost everything we’ve just seen about the 3.0 print function also applies directly to 2.6 print statements—which makes sense, given that the function was intended to both emulate and improve upon 2.6 printing support.

The Python 2.6 print Statement

As mentioned earlier, printing in Python 2.6 uses a statement with unique and specific syntax, rather than a built-in function. In practice, though, 2.6 printing is mostly a variation on a theme; with the exception of separator strings (which are supported in 3.0 but not 2.6), everything we can do with the 3.0 print function has a direct translation to the 2.6 print statement.

Statement forms

Table 11-5 lists the print statement’s forms in Python 2.6 and gives their Python 3.0 print function equivalents for reference. Notice that the comma is significant in print statements—it separates objects to be printed, and a trailing comma suppresses

Return Main Page Previous Page Next Page

®Online Book Reader