加入收藏 | 设为首页 | 会员中心 | 我要投稿 大庆站长网 (https://www.0459zz.com/)- 科技、智能边缘云、事件网格、云计算、站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python2 与 python3 语法区别--转

发布时间:2020-07-29 09:27:29 所属栏目:Python 来源:互联网
导读:原文地址:http://old.sebug.net/paper/books/dive-into-python3/porting-code-to-python-3-with-2to3.html使用2to3将代码移植到Python 3Life is pleasant. Death is peaceful. It’s the transition that’s troublesome.— Isaac Asimov (attributed)概述几
</tr>
<tr>

</tr>
<tr>

</tr>
<tr>

</tr>
<tr>

>sys.stderr,1,3</tr>

  • 为输出一个空白行,需要调用不带参数的print()
  • 为输出一个单独的值,需要将这这个值作为print()的一个参数就可以了。
  • 为输出使用一个空格分隔的两个值,用两个参数调用print()即可。
  • 这个例子有一些技巧。在Python 2里,如果你使用一个逗号(,)作为print语句的结尾,它将会用空格分隔输出的结果,然后在输出一个尾随的空格(trailing space),而不输出回车(carriage return)。在Python 3里,通过把end=' '作为一个关键字参数传给print()可以实现同样的效果。参数end的默认值为'n',所以通过重新指定end参数的值,可以取消在末尾输出回车符。
  • 在Python 2里,你可以通过使用>>pipe_name语法,把输出重定向到一个管道,比如sys.stderr。在Python 3里,你可以通过将管道作为关键字参数file的值传递给print()来完成同样的功能。参数file的默认值为std.stdout,所以重新指定它的值将会使print()输出到一个另外一个管道。
  • Python 2有两种字符串类型:Unicode字符串和非Unicode字符串。Python 3只有一种类型:。

    Notes

    </tr>
    <tr>

    </tr>

  • Python 2里的Unicode字符串在Python 3里即普通字符串,因为在Python 3里字符串总是Unicode形式的。
  • Unicode原始字符串(raw string)(使用这种字符串,Python不会自动转义反斜线"")也被替换为普通的字符串,因为在Python 3里,所有原始字符串都是以Unicode编码的。
  • unicode()

    Python 2有两个全局函数可以把对象强制转换成字符串:unicode()把对象转换成Unicode字符串,还有str()把对象转换为非Unicode字符串。Python 3只有一种字符串类型,,所以str()函数即可完成所有的功能。(unicode()函数在Python 3里不再存在了。)

    Notes </tr>

    long长整型

    Python 2有为非浮点数准备的intlong类型。int类型的最大值不能超过sys.maxint,而且这个最大值是平台相关的。可以通过在数字的末尾附上一个L来定义长整型,显然,它比int类型表示的数字范围更大。在Python 3里,int,大多数情况下,它很像Python 2里的长整型。由于已经不存在两种类型的整数,所以就没有必要使用特殊的语法去区别他们。

    PEP237:统一长整型和整型。

    Notes </tr>
    <tr>

    </tr>
    <tr>

    </tr>
    <tr>

    </tr>
    <tr>

    </tr>

  • 在Python 2里的十进制长整型在Python 3里被替换为十进制的普通整数。
  • 在Python 2里的十六进制长整型在Python 3里被替换为十六进制的普通整数。
  • 在Python 3里,由于长整型已经不存在了,自然原来的long()函数也没有了。为了强制转换一个变量到整型,可以使用int()函数。
  • 检查一个变量是否是整型,获得它的数据类型,并与一个int类型(不是long)的作比较。
  • 你也可以使用isinstance()函数来检查数据类型;再强调一次,使用int,而不是long,来检查整数类型。
  • 比较运算符

    Python 2支持<>作为!=的同义词。Python 3只支持!=,不再支持<>了。

    Notes y:</tr>
    <tr>

    y <> z:</tr>

  • 简单地比较。
  • 相对复杂的三个值之间的比较。
  • has_key()

    在Python 2里,字典对象的has_key()方法用来测试字典是否包含特定的键(key)。Python 3不再支持这个方法了。你需要使用in运算符。

    Notes </tr>
    <tr>

    </tr>
    <tr>

    </tr>
    <tr>

    </tr>
    <tr>

    </tr>

  • 最简单的形式。
  • 运算符or的优先级高于运算符in,所以这里不需要添加括号。
  • 另一方面,出于同样的原因—or的优先级大于in,这里需要添加括号。(注意:这里的代码与前面那行完全不同。Python会先解释x or y,得到结果x(如果x)或者y。然后Python检查这个结果是不是a_dictionary的一个键。)
  • 运算符in的优先级大于运算符+,所以代码里的这种形式从技术上说不需要括号,但是2to3还是添加了。
  • 这种形式一定需要括号,因为in的优先级大于+
  • (编辑:大庆站长网)

    【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    原文地址:http://old.sebug.net/paper/books/dive-into-python3/porting-code-to-python-3-with-2to3.html

    使用2to3将代码移植到Python 3

    2to3的实用脚本(Utility Script),这个脚本会将你的Python 2程序源文件作为输入,然后自动将其转换到Python 3的形式。chardet移植到Python 3(porting chardet to Python 3)描述了如何运行这个脚本,然后展示了一些它不能自动修复的情况。这篇附录描述了它能够自动修复的内容。

    print语句

    在Python 2里,print是一个语句。无论你想输出什么,只要将它们放在print关键字后边就可以。在Python 3里,print()是一个函数。就像其他的函数一样,print()需要你将想要输出的东西作为参数传给它。

    Notes
    Python 2 Python 3
    Python 2 Python 3
    Python 2 Python 3
    Python 2 Python 3
    Python 2 Python 3
    Python 2 Python 3
      推荐文章
        热点阅读