python3和python2的区别,以及兼容处理
0 Python rabin 78 阅读 • 4个月前

最近写了个框架,要同时兼容python3和python2,作如下记录:

1、静态import
这里主要说明一下导入目录下的模块,如果一个目录下有__init__.py文件,python会认为该目录是一个package。我们做如下目录:

demo
  -->p1
    -->__init.py
    -->p1test.py
  -->p2
    -->__init.py
    -->p2test.py
  main.py
  test.py

现在我们想在main.py下导入p1test和p2test:

from p1 import *
from p2 import *
import p1
import p2
from test import *

这样写在python2下没有问题,python3下会报如下错误:

ModuleNotFoundError: No module named 'p1'
ModuleNotFoundError: No module named 'p2'
ModuleNotFoundError: No module named 'test'

我们可以修改为:

from demo.p1 import *
from demo.p2 import *
import demo.p1
import demo.p2
from .test import *

就可以了。


2、动态import

很多时候我们并不知道一个package下有什么模块,我们可能知道这个package名(目录名),那么这是就需要动态载入了。

python中动态载入有两种方式:

package = __import__('p1')
package.p1test


3、print

python3中print为一个函数,所以尽量使用函数方式来print:

print('test')

也可以直接使用pprint包:

import pprint
pprint.pprint('test')


待续...

评论:0