我是Python的新手。
我在python 2.7上运行以下代码,当我使用print或print()时,我看到不同的结果。这两个功能有什么区别? 我读了其他问题,例如https://www.dropbox.com/s/e1fzxaxp3mummqz/weatherdata.xlsx?dl=0,但我找不到答案。
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)
答案 0 :(得分:11)
在Python 2.7(以及之前)中,print
是一个带有大量参数的语句。它打印参数,中间有空格。
所以,如果你这样做
print "box:", box
首先打印字符串&#34;框:&#34;,然后打印一个空格,然后打印box
打印为(__str__
函数的结果)。
如果你这样做
print ("box:", box)
您已经提供了一个参数,一个由两个元素组成的元组(&#34; box:&#34;以及对象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
位于源文件的顶部,使其稍微为现在做好准备。
答案 1 :(得分:0)
在第一个示例中,您将打印元组,但不会调用打印功能。 所以以下是相同的:
UPDATE table2 JOIN table1 ON table2.ID = table1.ID SET table2.NEWTEXTDATA = table1.TEXTDATA;
换句话说,在第一个例子中,你创建了一个元组并打印出来。不同的输出,适用于不同的数据类型。
对于您的案例,函数和语句之间应该没有显着差异,但为了将来,我强烈建议您始终使用函数(a = ("box: ", box)
print a
)。但是,如果您仍然对差异感兴趣(与您的情况无关),则可以使用打印功能指定分隔符,结束位置以及输出位置,如documentation中所述。
答案 2 :(得分:0)
这主要是对其他答案的补充。
当正常用法为import org.apache.http.client.HttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
....
HttpClient httpClient = HttpClientBuilder.create().disableRedirectHandling().build();
new RestTemplate(new HttpComponentsClientHttpRequestFactory(httpClient));
时,您可以在Python 2脚本print (var)
中看到。
它使用print var
只是Python 2中的括号表达式的事实,简称为(var)
,因此var
和print(var)
在Python 2中的行为完全相同 - 但仅在打印单个变量
有趣的是,当您考虑迁移到Python 3时,print var
(此处调用函数打印)已经是正确的语法。
TL / DR:Python中的print(var)
只是一个简化Python3迁移的技巧,因为print(var)
只是一个表达式 - 元组形式将是(var)
答案 3 :(得分:0)
在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
答案 4 :(得分:0)
在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