之前用C语言写作业的时候,偶尔会遇到文件相互引用导致不能编译的问题,那么Python中是否会遇到这种情况呢
# a.py
import b
name = 'a'
print b.name
# b.py
import a
name = 'b'
print a.name
结果是AttributeError: 'module' object has no attribute 'name'
。。。
于是,换个方法试试
# a.py
import b
name = 'a'
if __name__ == '__main__':
print b.name
# b.py
import a
name = 'b'
if __name__ == '__main__':
print a.name
这样两个都可以运行了,为了进一步研究,再换一下
# a.py
import b
name = 'a'
if __name__ == '__main__':
print b.name
# b.py
import a
name = 'b'
print a.name
这样只有a能运行了,b不能运行
而且a输出的是
a
b
这样看来,import语句会先执行module里的内容,然后再向下执行
因此,如果两个模块中都只有数据和函数的话,相互import是不会出现问题的,只有在出现全局作用域出现语句时,才有可能出现问题,当然,这种情况也是可以想办法避免的啦。