|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- # a.py
- import b
- def x():
- print('x')
- b.y()
- # b.py
- import a
- def y():
- print('y')
- a.x()
- 执行 b.py 引发下边异常:
- >>>
- Traceback (most recent call last):
- File "/Users/FishC/Desktop/b.py", line 1, in <module>
- import a
- File "/Users/FishC/Desktop/a.py", line 1, in <module>
- import b
- File "/Users/FishC/Desktop/b.py", line 6, in <module>
- a.x()
- AttributeError: 'module' object has no attribute 'x'
复制代码
这是出错的代码, 整体的流程我明白了, 执行b.py 会import a然后找到a文件,第一行是import b 再回到b文件,接下来定义 y函数, 再执行a.x(),因为在引入的过程中a文件只运行到import B,还没有生成x()函数, 所以报错
- # a.py
- import b
- def x():
- print('x')
- if __name__ == "__main__":
- b.y()
- # b.py
- import a
- def y():
- print('y')
- if __name__ == "__main__":
- a.x()
复制代码
然后接下来是答案, 加上了 __name__ =="__main__"后就可以执行了 ,我没有看懂, 我的理解是前面的流程还是一样的,还是从b文件中开始运行, 此时b文件的name应该就是main,所以执行到 if__name__=="__main__"的时候应该是True吧, 然后接着执行a.x(), 但是x()的函数在a中还是没有生成,还是应该报错才对.这是我错误的理解.
求教真正的流程应该怎么走 感谢!
你需要了解一下模块和程序的问题。
你在a.py导入的b.py是程序,而没有成功导入到b.py里面的y函数。
你谷歌一下:
- python if __name__ == "__main__":
复制代码
理解一下作用。
__name__是什么
__main__是什么
|
|