在TensorFlow Object Detection API的范例程序:object_detection_tutorial.ipynb 中,有一句:
import six.moves.urllib as urllib
大家可能有一个疑问,urllib是Python自带的用于url访问的标准库,为什么还要这样来引用呢?
打开six的介绍,可以看到:six是为了解决Python2 和 Python3 代码兼容性而产生的,众所周知 Python 2 和 Python 3 版本的分裂给 Python 开发者们带来了很大的烦恼,为了使代码同时兼容两个版本,往往要增加大量的代码,典型的就有urllib部分方法不兼容。
所以,当编写代码考虑Python2 和 Python3 代码兼容性问题时,用:
import six.moves.urllib as urllib
不考虑兼容性问题时,直接用
import urllib
顺便说一下,six这个名字来源于 6 = 2 x 3,为什么不用‘Five’呢?5 = 2+3,一是因为乘法更有力量(more powerful),另外是因为five这个名字已经被Zope Five项目先占了^O^