鱼C论坛

 找回密码
 立即注册
查看: 1089|回复: 4

第051讲动动手第1题不理解

[复制链接]
发表于 2020-8-7 21:42:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
根据答案,添加了if __name__ == "__main__"这行代码之后,在执行b.py时,因为b.py是主函数,所以a.x()还是会被执行,而此时a模块还是没有被完全导入,请问答案为什么这么做?


  1. # a.py
  2. import b

  3. def x():
  4.     print('x')

  5. if __name__ == "__main__":
  6.     b.y()

  7. # b.py
  8. import a

  9. def y():
  10.     print('y')

  11. if __name__ == "__main__":
  12.     a.x()
复制代码
微信图片_20200807214152.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-8-10 17:32:10 | 显示全部楼层
陶瑞艺 发表于 2020-8-9 12:06
**** 作者被禁止或删除 内容自动屏蔽 ****

我这里怎么显示提示:作者被禁止或删除....你到底怎么回事啊?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-11 13:20:30 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-8-11 13:21:42 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-11 16:56:30 | 显示全部楼层
简单地说,就是 加上 if __name__ == "__main__": ... 就是可以让该文件的代码作为脚本程序执行时(python xx.py)这时if条件满足,于是从这里开始执行。
但注意,这时你写的 和 if 同级别的(没缩进的代码),也会执行(如import等语句)。

当该.py文件,作为 模块导入时(即在别的文件里 import xx 时,或 pythom -m xx.py时),
这时 if  __name__ == "__main__"  该条件不成立,即只会作为模块而非脚本程序,这时只可以调用里面的一些函数和模块变量。
但注意,若该模块最外层 有像 print()等直接运行的语句,在导入时,就会执行,这不同于 def func(): ... 这样的自定义函数,需要 手动调用 xx.func() 才会执行。

这样说,你应该明白了,可以自己验证一下。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-25 16:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表