文章目录
一、模块的简介
1. 什么是模块
模块(module)其实就是py文件,里面定义了一些函数、类、变量等
包(package)是多个模块的聚合体形成的文件夹,里面可以是多个py文件,也可以嵌套文件夹
库是参考其他编程语言的说法,是指完成一定功能的代码集合,在python中的形式就是模块和包可以直接拿来使用
2. 为什么要用模块
别人写好的一些功能我们把它下载下来,直接用在我们自己的项目中,大大提高开发效率比如:支付宝支付、微信支付、发短信、验证码等等很多功能
3. 模块的分类
-
内置模块(python解释器原来就存在的,在任何位置,任何时间都可以直接使用)
eg:time -
第三方的(别人写好的模块,人家放在了网上,去网上下载)
-
自定义的(我们自己写的模块)
4. 模块存在的形式
一共有4钟形式,只需要掌握2钟
-
我们自己写的python代码(.py文件)
# 一个py文件就是一个模块 -
包的形式:就是一系列py文件的组合(文件夹)
#文件夹内部有一个__init__.py文件
二、模块的导入方式
1. 基本格式
基本格式1 import句式
import NEW #导入NEW.py文件
NEW.index() #通过句点拿到NEW里面的函数调用
NEW.index1() #通过句点拿到NEW里面的函数调用
NEW.index2() #通过句点拿到NEW里面的函数调用
print(NEW.user)
2. from…import…句式
from NEW import user,index,index1,index2 # from the NEW.py
import NEW
"""
from...import...句式
导入模块也会执行导入文件,多次导入也只会执行一次,跟import句式一样
导入文件的时候发生了什么事儿?
1. 首先会运行执行文件,产生执行文件的全局名称空间
2. 运行导入文件NEW
3. 会产生导入文件的全局名称空间,把导入文件中的名字都丢到全局名称空间中
4. 会在执行文件中产生一个名字user指向导入文件的名称空间中得user
如果使用from...import...句式的情况,在执行文件中会出现名字冲突的情况(在执行文件中出现了和导入的名字一样的时候)
出现冲突的时候离谁近用谁的
以后所有的导入语句都写在文件的开头
"""
# user = 1000
# print(user)
# from NEW import user
# print(user)
# print(index)
# index1()
# index2()
def index1():
print('from read1')
index1()
三、导入语句的其他用法
1. 起别名
from md import money as m
from md import read1 as r1
from md import read2 as r2
import md
def read1():
print('from read1')
read1()
r1()
md.read1()
2. 连续导入
import md
import time
import os
import sys
import md,time,os,sys
3. 通用导入
from md import *
from md import *
read1()
change()
__all__ = ['money', 'read1', 'change']
四、循环导入
在你编码的过程中,循环导入是不能允许出现的
如果你的代码出现了循环导入问题,那就是你的代码设计不合理,及时更正
五、判断文件类型(执行文件、导入文件)
所有的py文件中都自带一个__name__内置名
当py文件是执行文件的时候 __name__的结果是__main__
当py文件是被导入文件的时候 __name__的结果是模块名(文件名)