我想我明白了什么是“进口*”做了和它的潜在危险,但显然不是。
我有:
foo.py:
from datetime import datetime
from bar import *
print(datetime.now())
酒吧.py:
import datetime
运行 foo.py 的结果是一个异常:
AttributeError: 模块“datetime”没有属性“now”
datetime是一个模块,但是datetime.datetime是一个类型。from datetime import datetime使其datetime在 foo.py 中引用类型,但随后from bar import *以某种方式使其再次引用模块。
删除from bar import *使异常消失。
但是为什么from bar import *模块会污染我的命名空间datetime?datetime是一个导入到 中的模块bar,但它没有在那里定义。我错过了什么?
白衣染霜花
相关分类