Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我应该在Python2.7中使用print语句或函数吗?_Python_Python 2.7_Python 3.x - Fatal编程技术网

我应该在Python2.7中使用print语句或函数吗?

我应该在Python2.7中使用print语句或函数吗?,python,python-2.7,python-3.x,Python,Python 2.7,Python 3.x,为了在Python 2.7.10中编写简单的脚本,我是否应该使用print函数而不是语句使它们成为未来的证明,以防我想在另一台只有Python 3的计算机上或在线IDE上测试它们?对于这两个或最常见的Python版本,最好的方法是什么 print ("Hello world!") 有什么区别?这是我学习的第一门编程语言,所以我不确定。现在,我在“2”或“3”中输入了一个固定变量,然后代码中的if语句对这两个版本执行不同的打印函数和连接方法 --例子-- 我现在使用的是: print "Hell

为了在Python 2.7.10中编写简单的脚本,我是否应该使用print函数而不是语句使它们成为未来的证明,以防我想在另一台只有Python 3的计算机上或在线IDE上测试它们?对于这两个或最常见的Python版本,最好的方法是什么

print ("Hello world!")
有什么区别?这是我学习的第一门编程语言,所以我不确定。现在,我在“2”或“3”中输入了一个固定变量,然后代码中的if语句对这两个版本执行不同的打印函数和连接方法

--例子--

我现在使用的是:

print "Hello world!"
但是我应该在两个版本中都使用这个吗

print ("Hello world!")

这两行中的任何一行都可以在2.7和3.x中使用

print ("Hello world!")
print("Hello world!")
仅2.7版本的打印语句示例如下:

print "Hello world!"
您可能应该继续使用括号来证明代码的正确性,PEP8格式如下所示,注意事项如下:

print("Hello world!")
函数和开放参数之间没有空格

上述方法适用于简单字符串,但真正的解决方案是从future导入print函数,如下所示:

from __future__ import print_function
这将使print在Python2中成为一个真正的函数,类似于Python3中的函数。一个简单地用括号括起来的东西会咬你的地方是当你这样做的时候:

print 1,2
vs

python 2将后者视为一个元组,您将看到输出中的变化如下:

>>> print 1,2 
1 2
>>> print(1,2) 
(1, 2)

如果要使Python 2代码更像Python 3,请使用
\uuuuu future\uuuuu
导入:

from __future__ import print_function
然后只需像在Python 3中那样使用
print()

这比在
print
语句上加括号要好得多,因为:

x = 100
print("Results:", x)
这将在Python2.x中打印
(“结果:”,100)
,但如果使用导入或Python3.x,它将按预期打印
结果:100

但是,如果您只关心可移植性,那么
2to3
程序可以很好地将
print
语句转换为
print()
函数调用


您还可以导入
unicode\u文本
分区
等,使代码的其他部分更像Python 3。或者你可以现在就直接切换到Python 3。

如果你真的想同时支持Python 2和Python 3,你应该使用
print()
函数,并通过将它放在文件顶部的将来导入来强制执行它

from __future__ import print_function
现在,在Python 2中,使用
print
作为语句是一个语法错误

>>> print ""
  File "<stdin>", line 1
    print ""
           ^
SyntaxError: invalid syntax
Python 2.7.10没有
print()
函数,除非您导入它。添加括号不会将其转换为函数,它只是指定分组。如果您试图模拟传递多个对象,它将打印一个
元组

>>> print 1
1
>>> print (1)
1
>>> print 1,2
1 2
>>> print (1,2)
(1, 2)
print
周围添加括号可能会使您的程序在运行Python 2还是Python 3时稍微健壮一些,但任何超出基本用法的操作都会产生意想不到的结果print(1,2)
将产生与Python 2中的
print 1,2
相同的结果。如果您想要实际的兼容性,那么应该导入print函数(在Python2或Python3中可以安全地完成,但在Python2中只会有所不同):


有一个重要的区别需要提及:
print(1,2)
vs
print 1,2
我认为Andrea提到的区别是至关重要的,他们的遗漏使这个答案非常误导。更新了答案,以反映我的想法,执行
\uuuu future\uuuu
导入的主要优点是,我不需要学习特殊用途的
打印
语句语法。我同时编写Py2和Py3代码,虽然我非常擅长编写交叉兼容的代码,或针对特定版本的功能,但使用
print
语句毫无益处,而且当
print
函数是一个非常普通的Python函数时,它是一堆特殊用途的规则和语法,不需要特殊语法。它也可以做的比语句更多,但这是“不学习单一用途的特殊语法”的次要功能。
>>> print 1
1
>>> print (1)
1
>>> print 1,2
1 2
>>> print (1,2)
(1, 2)
>>> from __future__ import print_function
>>> print (1,2)
1 2