[英]What is the difference between print and print() in python 2.7
我是Python的新手。
我在python 2.7上运行以下代码,使用print或print()时看到不同的结果。 这两个功能有什么区别? 我读了其他问题,例如, 这个问题 ,但是没有找到答案。
class Rectangle:
def __init__(self, w, h):
self.width = w
self.height = h
def __str__(self):
return "(The width is: {0}, and the height is: {1})".format(self.width, self.height)
box = Rectangle(100, 200)
print ("box: ", box)
print "box: ", box
结果是:
('box: ', <__main__.Rectangle instance at 0x0293BDC8>)
box: (The width is: 100, and the height is: 200)
在Python 2.7(及更高版本)中, print
是一个带有许多参数的语句 。 它打印参数之间有一个空格。
所以如果你这样做
print "box:", box
它首先打印字符串“ box:”,然后打印空格,然后打印任何box
(其__str__
函数的结果)。
如果你这样做
print ("box:", box)
您给了一个参数,一个由两个元素(“ box:”和object box
)组成的元组。
元组作为其表示形式进行打印(主要用于调试),因此它调用其元素的__repr__
而不是其__str__
(这应该给出用户友好的消息)。
这就是您看到的区别:( (The width is: 100, and the height is: 200)
是盒子的__str__
的结果,但是<__main__.Rectangle instance at 0x0293BDC8>
是它的__repr__
。
在Python 3和更高版本中, print()
是其他函数的正常功能(因此print(2, 3)
打印"2 3"
而print 2, 3
是语法错误)。 如果要在Python 2.7中使用
from __future__ import print_function
在您的源文件的顶部,以使其稍作准备。
在第一个示例中,您正在打印元组,但不调用print函数。 因此,以下内容相同:
a = ("box: ", box)
print a
换句话说,在第一个示例中,您创建了一个元组并将其打印出来。 不同的输出,用于不同的数据类型。
对于您的情况,函数和语句之间应该没有显着区别,但是为了将来,我强烈建议您始终使用函数( print()
)。 但是,如果您仍然对差异感兴趣(与案例无关),则可以使用print函数指定分隔符,结尾和输出位置,如文档所述 。
这主要是对其他答案的补充。
您可以在Python 2脚本中看到print (var)
,而通常的用法是print var
。
它使用以下事实: (var)
只是在Python 2中带有括号的表达式,被简单地视为var
因此print(var)
和print var
在Python 2中的行为完全相同-但仅在打印一个变量时有效
有趣的一点是,当您考虑迁移到Python 3时, print(var)
(此处是对函数 print的调用)已经是正确的语法。
TL / DR:Python 2中的print(var)
只是一种技巧,它利用(var)
只是一个表达式的事实简化了Python3的迁移-元组形式为(var,)
在python 2.7中,print()比print快。 这是使用Repl.it Python Console Online进行的测试:
import time
start_time = time.time()
print "lol"
end_time = time.time()
print(end_time - start_time)
start_time_2 = time.time()
print ("lol")
end_time_2 = time.time()
print(end_time_2 - start_time_2)
print((end_time_2 - start_time_2) > (end_time - start_time))
Python 2.7.10
[GCC 4.8.2] on linux
lol
7.08103179932e-05
lol
1.00135803223e-05
False
在Python 2.7中:print不是函数,它是关键字,并充当特殊语句。
在此之前,我们需要进一步了解python2中的元组和expr。
如果我们写('hello'):它被视为一个表达式,而不是一个元组,只有引入“,”才可以被视为一个元组。
例如:
print("hello")
>>> hello
a=("hello")
>>>'hello'
a=("hello", "world")
>>>('hello', "world")
print("hello", "world")
>>> ('hello', 'world')
因此在python2.7中,当我们使用带括号的print语句时,它仍被视为不是python函数的语句,并且带括号的值被视为元组或表达式,而在python 3中,print不再是它的语句被认为是一种功能。
为了在python2中使用python 3的打印功能,请使用以下import语句,
from __future__ import print_function
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.