lee-romantic 's Blog
Everything is OK!
Toggle navigation
lee-romantic 's Blog
主页
About Me
归档
标签
python导入自建模块的问题
2018-10-29 22:26:45
216
0
0
lee-romantic
**#1.自建模块** 创建一个文件夹,在里面放入作为模块的py文件,这个文件夹可以作为一个包 当没有`__init__.py`文件时,这时可以直接`import 包`,但是不能通过先使用 `import 包名` 然后再`包名.模块`来访问包里的模块.因为这时认为包为一个模块,而包是一个文件夹,并不是模块。 可以通过 `import pack.module`或者 `from pack import module`来导入pack文件夹(也叫做包)中的模块(py文件),或者在`__init__.py`文件中加载相应的模块即可(`from . import test1 #test1为包中的一个py文件`) 后面就是这种情况. **#2.引入包,并调用里面的模块** ① `import 包名.模块名` ② `from 包名 import * ` ps:此时只能使用`__init__.py`中`__all__`中允许调用的模块 ③ `from 包名 import 模块名 ` 特别的,如果想导入模块中的类(或者函数,变量等),不能使用: ``` import pack.module.class # 会提示没有相应的pack.module.class模块 ``` 应该使用: ``` from pack.module import class #from pack.module import * #这种会导入module中所有的变量 ``` 总之,能直接`import`的是`包和模块`,能`from ...import` 的,是`模块和类,变量`等 **#3. 包中的`__init__.py`文件** ``__init__.py``控制着包的导入行为,某个文件夹放入``__init__.py``,说明这个文件夹是个包 ① 若`__init__.py`为空 仅仅导入包,并不导入模块 ② _``_init__.py``中的 `__all__` `__all__`只控制` from 包名 import *`中导入的模块,它不仅在第一时间展现了模块的内容大纲,而且也更清晰的提供了外部访问接口。详细参考:https://blog.csdn.net/hang916/article/details/79474821 但是,实际上只要`from . import test1`就可以不用管``__all__``. ③ 在`__init__.py`中编写一些内容 加`print()`输出一些信息,当使用`from 包名 import 模块*`时 ,会将print里写的内容输出 例如`__init__.py`中可以为: ``` __all__=('test1') print('load module success!') from . import test1 #test1为包中的一个py文件 ```
上一篇:
第四章预习要点
下一篇:
np_stack()concatenate()hstack(),vstack()
0
赞
216 人读过
新浪微博
微信
腾讯微博
QQ空间
人人网
提交评论
立即登录
, 发表评论.
没有帐号?
立即注册
0
条评论
More...
文档导航
没有帐号? 立即注册