美文网首页
Python进阶 兼容Python2+3

Python进阶 兼容Python2+3

作者: FicowShen | 来源:发表于2018-06-13 16:09 被阅读8次

    Future模块导入

    第一种也是最重要的方法,就是导入future模块。它可以帮你在Python2中导入Python3的功能。

    # 上下文管理器是Python2.6+引入的新特性,如果你想在Python2.5中使用它可以这样做:
    from __future__ import with_statement
    
    
    
    # 在Python3中print已经变为一个函数。如果你想在Python2中使用它可以通过__future__导入:
    print
    # Output:
    
    from __future__ import print_function
    print(print)
    # Output: <built-in function print>
    

    模块重命名

    try:
        import urllib.request as urllib_request  # for Python 3
    except ImportError:
        import urllib2 as urllib_request  # for Python 2
    

    我们将模块导入代码包装在try/except语句中。我们是这样做是因为在Python 2中并没有urllib.request模块。这将引起一个ImportError异常。而在Python2中urllib.request的功能则是由urllib2提供的。所以,当我们试图在Python2中导入urllib.request模块的时候,一旦我们捕获到ImportError我们将通过导入urllib2模块来代替它。
    最后,你要了解as关键字的作用。它将导入的模块映射到urllib.request,所以我们通过urllib_request这个别名就可以使用urllib2中的所有类和方法了。

    过期的Python2内置功能

    Python2中有12个内置功能在Python3中已经被移除了。要确保在Python2代码中不要出现这些功能来保证对Python3的兼容。

    from future.builtins.disabled import *
    
    apply()
    # 在Python3中使用这些被遗弃的模块时,就会抛出一个NameError异常如下:
    # Output: NameError: obsolete Python 2 builtin apply is disabled
    

    标准库向下兼容的外部支持

    有一些包在非官方的支持下为Python2提供了Python3的功能。例如:

    • enum pip install enum34
    • singledispatch pip install singledispatch
    • pathlib pip install pathlib



    官方指南

    相关文章

      网友评论

          本文标题:Python进阶 兼容Python2+3

          本文链接:https://www.haomeiwen.com/subject/ztnjeftx.html