模块
一.什么是模块?
模块是一系列功能的集合体。
1.模块分为四种类别:
①一个.py就是可以是一个模块。
②包:就是一个存放__init__.py文件的文件夹。
③使用C编写并链接到Python解释器的内置模块。
④已被编译为共享库或DLL的C或C++扩展。
2.模块的三种来源:
①Python解释器自带的(内置库、标准库)
②第三方库
③自定义的库
二.为什么用模块?
1.拿来主义,提高开发效率。
2.从文件级别组织程序,方便管理并且解决代码冗余。
三.如何使用
(1)导入语法
1.import xxx
首次导入模块发生的事情:
①会触发xxx.py运行,所以会产生一个模块的名称空间。
②运行xxx.py的代码,将运行过程所产生名字都丢进模块的名称空间。
③在当前执行的文件的名称空间中拿到一个名字xxx,该名字就是指向模块的名称空间的。
必须xxx.yyy()调用模块中的变量或者函数等。
2.from xxx import yyy
首次导入模块发生的事情:
①会触发xxx.py运行,所以会产生一个模块的名称空间。
②运行xxx.py的代码,将运行过程所产生名字都丢进模块的名称空间。
③在当前执行的文件的名称空间中拿到一个名字yyy,该名字就是指向模块的名称空间的对应的名字。
优点:直接调用。 缺点:可能会造成名称冲突。
(2)使用技巧:
1.起别名
import spam as sp
2.导入所有函数的变量
from spam import *
通过在spam.py内__all__[‘money’,‘change’]设置,没有的访问不到。
(3)循环导入问题
不同文件之间的相互调用可能会造成错误。
解决方法:
①将变量名提前放置
x = 111
form m2 import y
②将调用写成函数
def f1():
from m2 import y
x=111
③直接解决方法:
设置第三方文件避免循环导入问题出现。
(4)模块的搜索路径
优先级:
1.内存
2.内置
3.环境变量
不要将自定义的模块名与内置模块名相同,会导致自定义的模块无法使用,因为内置模块的优先级高。
导用模块时的分隔符:.(点)
from aaa.m1 import f1
注意:
import aaa.m1.f1 报错
因为此时点是分隔符的意思
将路径写入环境变量:
import sys
sys.path.append(r'F:\code\python\ATM')