简体   繁体   中英

significance of using print() in python

What is the difference between using print() and not using it.

For example, say a = ("first", "second", "third') , what is the difference between

print (a[0] a[2])

and

a[0] a[2]

?

>>> s = 'foo'
>>> s
'foo'
>>> print s
foo

When you type any expression into the Python interpreter, if said expression returns a value, the interpreter will output that value's representation, or repr . repr s are primarily used for debugging, and are intended to show the value in a way that is useful for the programmer. A typical example of a value's repr is how repr('foo') would output 'foo' .

When you use print , you aren't returning a value and so the interpreter is not actually outputting anything; instead, print is writing the value's str to sys.stdout (or an alternative stream, if you specify it with the >> syntax, eg print >>sys.stderr, x ). str s are intended for general output, not just programmer use, though they may be the same as repr . A typical example of a value's str is how str('foo') would output foo .

The difference between what the interpreter does and what print comes more into play when you write modules or scripts. print statements will continue to produce output, while expression values are not output unless you do so explicitly. You can still output a value's repr , though: print repr(value)

You can also control str and repr in your own objects:

>>> class MyThing(object):
...     def __init__(self, value):
...         self.value = value
...     def __str__(self):
...         return str(self.value)
...     def __repr__(self):
...         return '<MyThing value=' + repr(self.value) + '>'
...
>>> mything = MyThing('foo')
>>> mything
<MyThing value='foo'>
>>> print mything
foo

In interactive mode, the difference is negligible, as the other answers indicate.

However, in a script, print a[0] will actually print output to the screen, while just a[0] will return the value, but that has no visible effect.

For example, consider the following script, printtest.py :

myList = ["first", "second", "third"]

print "with print:", myList[0], myList[2]

"without print:", myList[0], myList[2]

If you run this script in a terminal ( python printtest.py ), the output is:

with print: first third

>>> a=("first","second")
>>> print a[0],a[1]
first second
>>> a[0],a[1]
('first', 'second')

print() and not using it?

print prints value ( What I mean is in following example, read comets I added ):

>>> print a[1]
second           # prints without '
>>> a[1]
'second'         # prints with ' 

more useful:

print:

>>> print "a\nb"  
a                # print value   
b

but interpreter

>>> "a\na"       # raw strings 
'a\na'

that is raw:

>>> print repr("a\na")
'a\na'

difference: print (a[0] a[2]) and a[0] a[2]?

This print two elements of a tuple. as below

>>> print a[0], a[2]
first third  

this is similar to print two strings like below:

>>> print "one", "two"
one two

[second]

Where as this first create a tuple (a[0], a[2]) then that will be printed

>>> print (a[0], a[2])
('first', 'third')

first make a tuple of 2 strings then print that like below:

>>> print ("one", "two")
('one', 'two')  

Additionally, if you add , then it makes a tuple:

simple string

>>> a[0]
'first'

and this is tuple:

>>> a[0],
('first',) 

similarly,

>>> a[0], a[1]
('first', 'second')  

you can do this

>>> print (a[0], a[2], a[3])
('first', 'second', 'third')

try it :)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM