在线客服
扫描二维码
下载博学谷APP扫描二维码
关注博学谷微信公众号
程序开发者常常会遇到的问题是,有⼀个⾮常出名的Python模块被很多开发者使⽤着,但并不是所有⼈都只使⽤Python2或者Python3。这时候你有两个办法。第⼀个办法是开发两个模块,针对Python2⼀个,针对Python3⼀个。还有⼀个办法就是调整你现在的代码使其同时兼容Python2和Python3。本文将介绍⼀些方法,让你的脚本同时兼容Python2和Python3。
Future模块导⼊
这也是最重要的⽅法,就是导⼊__future__模块。它可以帮你在Python2中导⼊Python3的功能。这有⼀组例⼦。上下⽂管理器是Python2.6+引⼊的新特性,如果你想在Python2.5中使⽤它可以这样做:
from __future__ import with_statement
在Python3中print已经变为⼀个函数。如果你想在Python2中使⽤它可以通过__future__导⼊:
# Output:
from __future__ import print_function
print(print)
# Output: <built-in function print>
模块重命名
⾸先,⼤多时候我们会这样在脚本中导⼊模块:
import foo
# or
from foo import bar
其实你也可以这样做:
import foo as foo
这样做可以起到和上⾯代码同样的功能,但最重要的是它能让你的脚本同时兼容Python2和Python3。现在我们来看下⾯的代码:
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的兼容。这有⼀个强制让你放弃12内置功能的⽅法:
from future.builtins.disabled import *
现在,只要你尝试在Python3中使⽤这些被遗弃的模块时,就会抛出⼀个NameError异常,如下:
from future.builtins.disabled import *
apply()
# Output: NameError: obsolete Python 2 builtin apply is disabled
标准库向下兼容的外部⽀持
有⼀些包在⾮官⽅的⽀持下为Python2提供了Python3的功能。例如我们有:
enum pip install enum34
singledispatch pip install singledispatch
pathlib pip install pathlib
以上就是全部的方法,看到这里,相信大家已经明白了如何让脚本同时兼容Python2和Python3。如果要想学习更多关于Python的干货,可以在博学谷找到很多优质的Python在线课程,一起来看看吧~
— 申请免费试学名额 —
在职想转行提升,担心学不会?根据个人情况规划学习路线,闯关式自适应学习模式保证学习效果
讲师一对一辅导,在线答疑解惑,指导就业!
相关推荐 更多
除了python人工智能还可以用哪些编程语言实现?
关注人工智能技术方面的朋友看到这个标题肯定会说,人工智能首选编程语言就是python。是的,不可否认python因为简单易学,而且它可以无缝的与数据结构和其他常用的AI算法同时使用。很多机遇python的类库都可以在AI中得到广泛的使用。所以大家公认python是人工智能首选语言,但是除了python之外,人工智能还可以用哪些编程语言实现呢?
9565
2019-06-20 18:04:49
Python就业前景好不好?为什么学完Python找不到工作?
近几年,Python从一门默默无闻的编程语言突然蹿红,引来不少编程学习者的青睐。一方面是Python在开发里的广泛使用和流行,另一方面是许多求职者的困惑,Python就业前景好不好?为什么学完Python找不到工作?这两者看似矛盾,其实是有一定道理的的。下面我们就来聊聊学完Python找不到工作的真实原因。
6200
2019-11-16 12:03:31
利用Python数据分析可以做什么?
随着大数据时代的来临和Python编程语言的火爆,Python数据分析早已成为现在职场人的必备核心技能。那么利用Python数据分析可以做什么呢?简单来说,可以做到的内容有很多,比如检查数据表、数据表清洗、数据预处理、数据提取和数据筛选汇总等等。下面小编来为大家详细讲解一下这些用处。
6204
2019-12-20 21:47:50
Python常用框架Flask介绍
Flask一直被称为是Python中轻量级的可定制的框架。其核心简单,相比其他框架更加灵活轻便,也更容易掌握。下面我们一起详细的了解一下Flask框架吧。
4972
2020-08-24 11:51:27
URL的组成部分及作用是什么?
URL的组成部分及作用是什么?在WWW上每一信息资源都有统一的且在网上唯一的地址,该地址就叫URL统一资源定位器,是WWW的统一资源定位标志就是指网络地址。互联网上的每个文件都有唯一的一个的URL,包含的信息指出文件的位置以及浏览器应该怎么处理它。
7298
2021-12-17 16:18:01
热门文章
- 前端是什么
- 前端开发的工作职责
- 前端开发需要会什么?先掌握这三大核心关键技术
- 前端开发的工作方向有哪些?
- 简历加分-4步写出HR想要的简历
- 程序员如何突击面试?两大招带你拿下面试官
- 程序员面试技巧
- 架构师的厉害之处竟然是这……
- 架构师书籍推荐
- 懂了这些,才能成为架构师 查看更多
扫描二维码,了解更多信息
