简介
- 模块就是一个
Python
代码文件,是别人已经写好的代码文件,文件中的函数类以及变量,我们都可以使用 - 使用模块的好处:直接使用别人已经实现好的功能
模块的制作
- 制作一个模块,就是定义一个
python
代码文件 - 注意点:模块的名字要遵循标识符的规则
- 想要使用模块中的内容,必须先导入模块
- 方法一
import
模块名 - 使用:模块名.功能名
- 方法一
下面是文件 my_module
里的代码
num = 1
def func():
print "my_module func"
class Dog(object):
def show_info(self):
print "module 1 de show_info"
在另外一个模块里要想使用模块 my_module
里的代码则如下所示:
import my_module
# 调用 my_module 模块中的变量num
print(my_module.num)
# 调用 my_module 模块中的func 函数
my_module.func()
# 调用 my_module 模块中的类创建对象
dog = my_module.Dog()
dog.show_info()
- 方法二
- from 模块名 import 功能名1
这种方式有个缺陷,当导入多个模块的时候如果存在同名的方法或变量会出现覆盖的情况
还是使用 my_module
里面的代码,方法二使用如下所示:
from my_module import func
from my_module import num
func()
print (num)
- 方法三
- from 模块名 import * #将模块中所有的功能进行导入
这种使用和方法二一致,直接使用即可,但这种模块不建议使用
from my_module import func
from my_module import num
func()
print (num)
起别名
可以使用 as
修改原来模块和函数的名字,但对原来的名字进行重新命名以后,老的名字将不能再使用
方法一将被改成下面这个样子:
import my_module as mm1
mm1.func()
print(mm1.num)
dog = mm1.Dog()
dog.show_info()
方法二将被改成下面的样子:
from my_module import func as my_func
from my_module import num as my_num
my_func()
print (my_num)
- 注意:
在导入模块时,要注意两个模块在同一目录下,否则需要添加路径
模块中的all 变量
all 变量可以在每个代码文件中(模块中)定义,类型是元组,列表,作用是:影响 from
模块名 import
* 导入行为
- 如果没有定义
__all__
变量,模块中的所有功能,都可以被导入 - 如果定义了
__all__
变量,只能导入变量中定义的内容
__all__ = ['num','func']
num = 1
def func():
print "my_module func"
如上面的代码所示,在其他代码里只能使用 num
和 func
这两个变量,其他的不能使用
模块的搜索顺序
当前顺序 - 系统目录 - 程序报错
包
包:功能相近或者相似的模块放在一个目录中,并在目录中定义一个 __init__.py
文件,这个目录就是包,在 Pycharm
中下面的操作即是创建一个包
![](https://img.haomeiwen.com/i1419593/59a73f609522480d.png)
包的导入也有三个方法:
- 方法一 import 包名.模块名
包中的模块的代码如下所示:
num = 100
def func():
print "my_module1里的func函数"
使用方式如下所示:
import FirstPackage.my_module1
print FirstPackage.my_module1.num
FirstPackage.my_module1.func()
- 方法二: from 包名.模块名 import 功能名
代码和使用方式如下所示:
from FirstPackage.my_module2 import func
func()
- 方法三:from 包名 import *
这种方式不太常用,因为这种方式导入的内容太多
网友评论