模块

1.模块的定义与分类
定义:一个模块就是一个py文件,这个模块存储很多相似功能、相似函数的结合体
代码过多时,不可能全部存放在一个文件里  =>  不易维护,效率低
分文件存放时,各文件存在一些相同功能或者相似功能的函数,造成代码冗余、重复,将这些函数放在一个文件中,随拿随用  =>  节省代码,容易维护,结构更清晰
分类:  内置模块,标准库  python解释器自带的,time、os、sys等200多种
       第三方库(模块)  各种大神写的一些模块,通过pip install...安装  6000多种
       自定义模块
2.import
__all__ = ['name', 'read']
name = '太白金星'
def read():
    print('tbjx模块:',name)
def change():
    global name
    name = 'barry'
def func():
    print('正在调试')
if __name__ == '__main__':
    func()
import tbjx
# 当引用tbjx模块的时候,实际上将tbjx.py执行一遍,加载到内存.
import tbjx
import tbjx
import tbjx
import tbjx
import tbjx
# 只是第一次引用时,将此模块加载到内存.
3.第一次导入模块发生的三件事
import tbjx
1.将tbjx.py文件加载到内存
2.在内存中创建一个以tbjx命名的名称空间
3.通过tbjx.的方式引用此模块的名字(变量,函数,类名等)
4.别导入模块有独立的名称空间
通过tbjx.的方式引用此模块的名字时,一定是从此模块中寻找
通过import引用模块,有其独立名称空间,与当前执行文件没有关系
name = '蔡徐坤'
print(tbjx.name)

def read():
    print('in 02 模块import')
tbjx.read()
5.为函数起别名
1.简化代码
import tbjx as t
print(t.name)
2.简化代码
content = input('>>>').strip()
if content == 'mysql':
    import mysql_
    mysql_.sqlprase()
elif content == 'oracle':
    import oracle_
    oracle_.sqlprase()
=>
content = input('>>>').strip()
if content == 'mysql':
    import mysql_ as db
elif content == 'oracle':
    import oracle_ as db
db.sqlprase()  =>  统一化接口
6.导入多个模块
import time,os,sys  =>  不推荐
import time
import os
import sys  =>  易于阅读、编辑、搜索、维护
7.from...import...
from tbjx import name
from tbjx import read
# 相当于从tbjx模块的全局空间中将name,read变量与值得对应关系复制到当前执行文件的全局名称空间中
print(name)
read()
# 容易与当前执行文件产生覆盖效果
# 示例1:
from tbjx import name
name = '蔡徐坤'
print(name)
# 示例2:
name = '蔡徐坤'
from tbjx import name
print(name)
# 示例3:
from tbjx import name
from tbjx import change
change()
print(name)
# 示例4:
from tbjx import change
change()
from tbjx import name
print(name)
# 如果引用模块中的变量,那么执行文件中应避免出现同名变量
# 也可以起别名
from tbjx import name as n
8.from...import *
from tbjx import *  =>   引入模块所有内容,容易覆盖
from...import *与__all__(写在模块文件中)配合使用  =>  见上
print(name)
read()  
9.py文件的两种功能
1.脚本,一个文件就是整个程序,用来被执行(__name__ ='__main__')
2.模块,文件中存放着一堆功能,用来被导入使用(__name__=模块名)
__name__作用:用来控制.py文件在不同的应用场景下执行不同的逻辑  =>  见上
10.模块的搜索路径
寻找模块的路径: 内存 => 内置模块 => sys.path
只要这三个地方可以找到这个模块的路径,就可以直接引用到
import sys
print(sys.path) => 当前文件所在路径
print(sys.modules) => 自动导入的内置模块路径
如果找不到:
import sys
sys.path.append(r'要导入的模块路径')

转载于:https://www.cnblogs.com/wxl1025/p/11091442.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值