python2中的print语句可以不用小括号。_Python2与Python3差异之print

时代在发展,技术在进步。没有什么是停止不前的!2019年已经接近尾声,Python2停止更新的时间越来越近。其中比较流行的如 NumPy、Requests 和 TensorFlow 等承诺到 2020 年将停止支持2.x。尽管迁移过程也会花许多时间与精力,但是转Python3是早晚都要面对的。最近在迁移自己的代码到Python3,对于迁移的过程中遇到的情况进行总结。

首先我们来说一下常用的print。
最明显的区别就在于,我们在2.x版本中的print "hello world" ,在3.x版本中会报错。必须要以print("hello world")这样的格式。为什么会发生这样的变化呢?下面就让我们来看一下~

主要的变化就在于2.x中print是一个语句,我们可以讲要输出的内容直接放到print关键字后面即可。而3.x版本里,print()是一个函数,需要将输出的内容作为参数传递给print函数。
这里我们可以通过help函数来测试下。昨边终端的是2.7版本,右边的为3.7版本

b7537f224f0ee2bac25b4b3c6daa18db.png

我们可以看到,2.x版本中直接报语法错误,3.x版本中显示来函数的帮助信息。
我们来看一下3.x中的函数说明:

print(value, ..., sep=' ', end='n', file=sys.stdout, flush=False)

    Prints the values to a stream, or to sys.stdout by default.
    Optional keyword arguments:
    file:  a file-like object (stream); defaults to the current sys.stdout.
    sep:   string inserted between values, default a space.
    end:   string appended after the last value, default a newline.
    flush: whether to forcibly flush the stream.

value表示要输出的内容,可以有多个,其中用逗号隔开即可。可以使用格式化方法输出,也可以占位符的方式输出。具体转换的类型,可以去查阅相关表格,这里不做过多说明。
例如:

print("123","456","789")
print("My name is %s,I'm %d years old." % ('Tom',18))
print("My name is {0},,I'm %d years old.{1}".format('Tom', 18))

sep表示要使用的间隔符号,默认逗号隔开的参数会以空格间隔,使用sep参数可以替换成想要的分隔符,如下划线等符号。

print("hello","world",sep="_")

end表示换行,不加该参数默认是回车,使用end可以控制是否换行,比如:print("lines",end="")

file表示输出到的位置,默认是stdout,即输出到控制台。如果要输出到文件,首先需要open打开文件,然后设置打开的文件。

fp = open("1.txt", "w")
print("write file", file=fp)

flush 指是否立即输出,默认情况下优先存放到缓冲区,系统碰到n换行的时候会立即输出,没有换行不立即输出,flush=True可在没有换行的情况下立即输出。不过这个目前看不太常用。

接下来要说的是关于输出的字符类型:
2.x版本的编码问题一直比较蛋疼,2.x版本中有两种字符串类型:Unicode字符串和非Unicode字符串。3.x中只有一种字符串类型,即Unicode字符串。3.x中减少了2.x中比较蛋疼的字符串问题。

迁移过程中的代码批量替换
可以使用编辑器中的正则替换功能进行批量替换,这里大家使用的不同编辑器可能会存在些差异,可以根据具体情况来定,我这里使用vscode。如下图:

c8a7d075a78a2d1764893f0739a237e1.png


搜索的正则为:prints*(.*)
替换的内容为:print($1)

这里仅仅是第一篇,后续会继续更新。如http处理,字符串差异,异常处理、数据类型等。避免大家在过程中踩坑。大家也有一些场景问题,也可以在评论中发出来。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值