Python的一个命名空间冲突,关于from-import机制

Posted 王明辉的部落

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python的一个命名空间冲突,关于from-import机制相关的知识,希望对你有一定的参考价值。

from os import *
#import os

def foo():
    a = listdir("trainingDigits")
    b = open("trainingDigits/0_0.txt")

这段代码,如果仅启用

from os import *

就会在

b = open("trainingDigits/0_0.txt")

这个位置报

TypeError: Required argument ‘flags‘ (pos 2) not found这个错

如果仅启用

import os

就会在a = listdir("trainingDigits")这个位置报NameError: name ‘listdir‘ is not defined这个错

解决方法是

import os

def foo():
    a = os.listdir("trainingDigits")
    b = open("trainingDigits/0_0.txt")

这个涉及到from-import的导入机制了,简书上有一篇文章讲得比较清楚,有时间详细看看

https://www.jianshu.com/p/c82429550dca

 

以上是关于Python的一个命名空间冲突,关于from-import机制的主要内容,如果未能解决你的问题,请参考以下文章

防止私有和基于 pypi 的 Python 包之间的命名空间冲突

python进阶之命名空间与作用域

关于PHP命名空间的讨论

解读Python的命名空间

Python中的命名空间是啥?

命名空间简记