鱼C论坛

 找回密码
 立即注册
查看: 2213|回复: 5

关于模块inport的问题

[复制链接]
发表于 2020-1-8 11:24:57 | 显示全部楼层 |阅读模式

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

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

x
  1. # a.py
  2. import b

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

  5. # b.py
  6. import a

  7. def y():
  8.     print('y')

  9. a.x()
复制代码



这个代码中,import b 的同时创建b,b里又会import a,创建a,这样难道不会循环了吗?

虽然事实证明这个代码可信,但自己想不明白,大神给解释一下
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-1-8 12:10:11 From FishC Mobile | 显示全部楼层

使用import b 和使用 from  b import y 导入模块的机理不同
import b 导入会生成b模块的cache 文件,你可以发现在文件夹中自动产生 __pycache__ 文件夹,
不会产生循环嵌套导入问题。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-1-8 12:46:05 | 显示全部楼层
XiaoPaiShen 发表于 2020-1-8 12:10
使用import b 和使用 from  b import y 导入模块的机理不同
import b 导入会生成b模块的cache 文件,你 ...

没有计算机基础。不是很懂。
import的同时不是会去搜索被导入的模块吗?这样一想不是会循环么不是
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-8 18:01:36 | 显示全部楼层
fishbb 发表于 2020-1-8 12:46
没有计算机基础。不是很懂。
import的同时不是会去搜索被导入的模块吗?这样一想不是会循环么不是

如果 import 导入的模块重复,它是不会重新导入的。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-1-8 20:25:32 | 显示全部楼层
zltzlt 发表于 2020-1-8 18:01
如果 import 导入的模块重复,它是不会重新导入的。

那为什么使用下列语句会出错?不是不能重新导入么
# a.py
from b import y
def x():
    print('x')

# b.py
from a import x
def y():
    print('y')
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-8 20:29:00 | 显示全部楼层
fishbb 发表于 2020-1-8 20:25
那为什么使用下列语句会出错?不是不能重新导入么
# a.py
from b import y

from ... import 和 import ... 不一样。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-21 18:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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