如何兼容Python 2.x+Python 3.x
- 保留字变函数
Python 2.x使用__future__模块使用Python 3.x中的函数
# -*- coding:utf-8 -*-
# For Python 2.x
print print
File "<ipython-input-13-8fe752f7a342>", line 3
print print
^
SyntaxError: invalid syntax
# -*- coding:utf-8 -*-
# For Python 2.x & Python 3.x
from __future__ import print_function
print(print)
<built-in function print>
- 模块更名
使用try/except模块处理Python 2.x与Python 3.x不同名的模块
# -*- coding:utf-8 -*-
# For Python 2.x & Python 3.x
try:
import urllib.request as urllib_request # For Python 3.x
except ImportError:
import urllib2 as urllib_request # For Python 2.x
- 模块/功能过时
使用future模块禁用Python 2.x可用但Python 3.x过时的模块
# -*- coding:utf-8 -*-
# For Python 2.x & Python 3.x
from future.builtins.disabled import *
apply()
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-15-99a87af09d54> in <module>()
3 from future.builtins.disabled import *
4
----> 5 apply()
c:\python27\lib\site-packages\future\builtins\disabled.pyc in disabled(*args, **kwargs)
55 no longer a builtin in Python 3.
56 '''
---> 57 raise NameError('obsolete Python 2 builtin {0} is disabled'.format(name))
58 return disabled
59
NameError: obsolete Python 2 builtin apply is disabled
什么是兼容Python 2.x+Python 3.x
常用的兼容Python2.x和Python3.x的方式是:
* 开发2个模块,分别针对Python 2.x和针对_ Python 3.x_;
* 使用兼容模块,用于兼容Python 2.x和Python 3.x;