由于某种原因,此代码会产生错误:
import os
def main():
print(os.path.isfile('/bin/cat'))
import os
if __name__ == '__main__':
main()
结果:
Traceback (most recent call last):
File "test.py", line 10, in <module>
main()
File "test.py", line 5, in main
print(os.path.isfile('/bin/cat'))
UnboundLocalError: local variable 'os' referenced before assignment
为什么会发生?请注意,在这两种情况的开头都有import os
. 不知何故,函数体末尾的额外导入会影响该函数的整个范围。
如果您在函数中删除导入,一切都很好(这不足为奇)。
import os
def main():
print(os.path.isfile('/bin/cat'))
# import os
if __name__ == '__main__':
main()
结果:
True
关于可能的重复:有一些类似的问题,但关于全局变量,而不是导入。