模块的概念及使用
在程序中引用模块,通过模块来调用,那么是什么?其本质就是一个Python的源程序以.py结尾的代码文件,可以将代码量较大的程序分割成彼此独立的代码片段,可以是变量、函数或者类的定义 。一个文件被看作是一个独立的模块,一个模块也可以被看作是一个文件,在模块中,模块的名称(作为字符串)可用作全局变量name的值。模块的文件名就是模块的名字加上扩展名.py。python允许“导入”其他模块以实现代码重用。模块分为内置模块、自定义模块和第三方模块。
Python中要引入模块,使用import语句,格式如下:
import <模块名>
注意:
如果是直接引入模块,在使用模块中函数或属性(常量、变量)时一定要指出函数或属性的所属模块,格式为:<模块名>.<函数或属性>,否则会出错。
>>> import random
>>>
>>> num = random.randint(1, 100) #使用random模块中的randint()函数
>>> print(num)
17
如果只想引入模块中的某个函数、类或属性,使用from…import语句,格式如下:
from <模块名> import <函数名、变量名或类名>
举例:
>>> from random import randint
>>>
>>> num = randint(1, 100)
>>> print(num)
37
在使用from...import语句从模块中引入函数时,为避免冲突和便于理解,可以使用as语句给引入的函数换个名字,如下:
from <模块名> import <函数名或变量名> as <自定义名>
举例:
>>> from random import randint as ra
>>>
>>> num = ra(1, 100)
>>> print(num)
56
随着程序设计的复杂性,定义模块时需要使用命名空间以避免名称冲突,命名空间被称为“包”
(package),一个包就是放到一个文件夹里的模块集合。包的名称即为文件夹的名称,创建包时,需要将一个名为__init__.py
的文件(通常为空的)放在该包的文件夹中,若忘记创建这个文件,则无法从该包的文件夹中导入需要的模块。
在工作目录中,将一个模块放到了一个名为auth
的包里,而工作目录同样包含一个main.py
文件用于启动程序,在auth包里增加一个users.py
模块文件,再增加一个admin
包和对应的authentication.py
模块文件,文件夹的层次结构如下:
mypy/
main.py
auth/
__init__.py
users.py
admin/
__init__.py
authentication.py
当在包之间导入模块时,有两种方式:绝对导入和相对导入。
绝对导入
import auth.users #绝对导入需要指明模块的完整路径
或者
from auth import users
import语句使用点号作为分隔符来分隔包或者模块。
相对导入
from . import users #设定编辑auth包的__init__.py文件,前面这个点号说明使用当前包里的users模块
from .. import users #设定编辑admin包的__init__.py文件,前面两个点号说明使用admin包的父包auth里的users模块
博文最后更新时间: