我的当前目录中有一个名为copy.py
的脚本,其中包含以下内容:
#!/usr/bin/env python3
print("Ahoy, matey!")
如果我运行Python交互式shell并执行一些引发异常的操作(例如引用不存在的变量),令我惊讶的是,“Ahoy,matey!”这句话。打印出来了。
当我将copy.py
脚本重命名为其他内容时,例如script.py
,它不再像那样。我的问题是,为什么交互式shell必须在出错时调用copy.py
?是否预期和/或记录了这种行为?
谢谢!
答案 0 :(得分:1)
当Python导入模块时,module search path order为:
现在,在引发异常时,Python会运行特定的代码。尝试导入copy
Python模块的任何代码都将导入模块并在其中打印字符串。这就是为什么你不应该使用也是标准Python模块名称的名称。