1. 命名空间污染与冲突
from...import
会将名称直接引入当前命名空间,可能导致名称冲突:
# module1.py
def calculate():
print("Module 1 calculation")
# module2.py
def calculate():
print("Module 2 calculation")
# main.py - 导致冲突
from module1 import calculate
from module2 import calculate # 覆盖了前一个导入
calculate() # 输出 "Module 2 calculation"
解决方案:
- 使用完整模块名导入:
import module1; module1.calculate()
- 使用别名:
from module1 import calculate as calc1
- 避免使用通配符导入(from module import *)
发表评论