我用python编写了这行代码
print 'hello world'
反对
print ('hello world')
有人能告诉我这两者之间的区别吗?
我在一个简单的代码中使用了它
var = 3
if var > 2:
print 'hello'
它无法严格检查var的所有值。但如果我将代码定义为
var = 3
if var > 2:
print ('hello')
它起作用了!
发布于 2012-11-16 11:04:12
对于Python 2,这没有什么不同。在这里,print
是一条语句,'hello'
和('hello')
是它的参数。后者被简化为'hello'
,因此它们是相同的。
在Python3中,删除了print语句,转而使用print函数。函数是使用大括号调用的,所以它们实际上是需要的。在这种情况下,print 'hello'
是一个语法错误,而print('hello')
使用'hello'
作为第一个参数调用函数。
通过显式导入,可以将print函数向后移植到Python 2。为此,在第一次导入模块时添加以下内容:
from __future__ import print_function
然后,您将从Python 2中的Python 3获得相同的行为,并且再次需要使用括号。
发布于 2012-11-16 11:01:23
print语句已被替换为
print()
函数,该函数带有关键字参数以替换旧的print语句(PEP 3105)的大多数特殊语法。
此PEP中提出的更改将使当前的大多数打印语句无效。在3.0版中,只有那些附带地将所有参数括起来的括号将继续是有效的Python语法,并且只有打印单个带括号的值的那些将继续执行相同的操作。例如,在2.x中:
>>> print ("Hello", "world") # without import
('Hello', 'world')
>>> from __future__ import print_function
>>> print ("Hello", "world") # after import
Hello world
发布于 2018-12-24 21:51:55
我在这里搜索regex来转换这些语法。以下是我对其他人的解决方案:
在旧的Python2示例脚本中运行良好。否则,使用2to3.py进行额外的转换。
在Regexr.com上试用(由于某种原因在NP++中不起作用):
find: (?<=print)( ')(.*)(')
replace: ('$2')
对于变量:
(?<=print)( )(.*)(\n)
('$2')\n
对于标签和变量:
(?<=print)( ')(.*)(',)(.*)(\n)
('$2',$4)\n
How to replace all print "string" in Python2 with print("string") for Python3?
https://stackoverflow.com/questions/13415181
复制相似问题