Python(28)---模块和包的基本概念
Posted 小伙郭
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python(28)---模块和包的基本概念相关的知识,希望对你有一定的参考价值。
一、模块
定义:在python中,一个 .py 文件就称为一个模块
使用模块的好处:最大的好处就是提高了代码的可维护性
分类(三种):
- python标准库
- 第三方模块
- 应用程序自定义模块
模块导入方法:
#cal.py def add(x,y) return x + y def sub(x,y) return x - y
1. import 语句
import module1[, module2[,.... moduleN]]
#举例:
#test.py
import cal print(cal.add(3,5)) print(cal.sub(3,5))
注意:
import 做了两件事情:一是运行cal函数;第二是引入变量名
2. from...import 语句
from modulename import name1[, name2[, ... nameN]]
注意:
这个声明不会把整个modulename模块导入到当前的命名空间中,
只会将它里面的name1或者name2单独引入到执行这个声明的模块的全局符号表。
#举例:
#test.py
from cal import add from cal import sub print(add(3,5)) print(sub(3,5))
3. from...import*语句
from modulename import*
#举例:
#test.py
from cal import* print(add(3,5)) print(sub(3,5))
(*代表一切,但是不推荐这种模块导入方式)
关于路径的补充:
当我们使用import语句时,python解释器是怎么样找到对应的文件的?
答案是解释器有自己的搜索路径,存在 sys.path里。
import sys print(sys.path)
#存放的是执行文件的路径
二、包(package)
1. 基本概念
为了避免模块名相同带来的冲突,python引入按照目录组织模块的方法,称为包(package)
每个包目录下面都会有有个 __init__.py 的文件,这是区别普通目录的。如果没有__init__.py ,则不是一个包
__init__.py 可以是空文件,也可以有python代码,因为__init__.py本身就是一个模块,而它的模块名就是对应包的名字
引入包以后,只要顶层的包名不与别人冲突,那所有模块都不会与别人冲突。
2. 包之间多层点的调用
举例:
#main.py def add(x, y): return x + y def sub(x, y): return x - y
调用方式一:
#test.py from my_module.web1.web2.web3.main import sub print(sub(2,5))
调用方式二:
#test.py from my_module.web1.web2.web3 import main print(main.add(2,5))
注意:包只要被调用,就是执行该包的 __init__.py 文件
以上是关于Python(28)---模块和包的基本概念的主要内容,如果未能解决你的问题,请参考以下文章