python中import是什么意思_Python中import

关于 Python 中的 import 调用模块,不知道有没有同学跟我一样遭遇过同样的“坑”。前一段时间看代码的时候就遇到过这个问题,但是懒得整理,今天恰巧又碰到了同样的问题。

包和模块

什么是包?你在主目录下面创建了一个文件夹,此时这个文件夹能不能称为一个包?答案是不能的。需要在该目录下面添加一个 _init_.py 的文件才行。

包中存放的是什么?是模块。那么什么又是模块呢?

模块就是以 .py 为结尾的文件。

通过模块和包的共同作用,你就可以调取目标包中的目标模块,今儿可以应用目标模块中的函数、类等。

import的两种格式

import XX

from YY import XX

第一种格式XX必须是模块的名称(即 XX.py)

第二种就不同了,YY可以是包的名称,此时XX是模块的名称;YY是模块的名称,此时XX是类、函数的名称等。

这两者后面都可以接 as

问题

import遇到的问题无非就是,主目录下的文件引用主目录下子目录下的子文件;子目录下子文件之间的相互引用;子文件1下的文件引用子目录2下的文件。不知道我说明白没有,看图吧。

--home

--son1

s1_1.py

s1_2.py

--grandson1

gs1.py

--grandson2

gs2.py

gs3.py

--son2

s2_1.py

s2_2.py

h1.py

h2.py

sys.path 用于查找 import查找模块的地方。注意,不要再pycharm中操作,会有一些不同。

h1调用h2:

import h2

h1调用s1_1.py

from son1 import s1_1

注意一定要在目录中添加 __init__.py 文件

s1_1调用s1_2.py

from son1 import s1_2

from . import s1_2

这里就产生差异了,首先,当运行 python s1_1.py时候就产生报错了,怎么解决?

使用 Python -m son1.s1_1 两个注意的点个,第一,这个命令是在Home目录下面输入的,第二是 son1.s1_1 没有 .py 结尾,也不是/。测试应用上面两个都可以。这是在终端上运行。

如果你在Pycharm中运行的话

绝对路径的情况下,你可以直接运行s1_1.py文件,而相对路径则不行。

s1_1调用s2_1.py

from son2 import s2_1

这就不涉及到相对路径了,在Pycharm中同样可以直接运行

s1_1调用h1.py

import h1

同样pycharm中可以直接运行,终端中需要 -m

gs1调用s1_1

from son1 import s1_1

gs1调用gs2,gs2,s2_1,h1

from son1.grandson2 import gs2

from ..grandson2 import gs2

from . import gs3

from son2 import s2_1

import h1

总而言之,主目录下面的文件可以直接调用 import h1,

同级子目录之间需要 from .yy import

同目录下 from . import

所在的目录在同级目录下 from yy import

一般运行子目录中的文件都需要加 -m 如果子目录调用了其他的文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值