python模块

模块:代码复用、命名空间的划分、数据共享。
模块导入:首次【找到对应的模块、编译成字节码、执行模块代码在内存中创建它的对象】,再次【内存中直接提取对象】。
模块导入后存储在sys.modules中【字典式存储】。
模块搜索:从当前路径开始查找,查找顺序:当前目录、PYTHON-PATH环境变量、标准库目录、.pth文件目录【sys.path】。
模块编译:生成字节码,加载时检查字节码时间戳,最新则跳过编译【主程序字节码运行完抛弃,加载模块保留方便高效加载】。
模块运行:执行生成的字节码,语句依次执行。
模块类型:源代码文件py、字节码文件pyc、目录【包导入】、C扩展模块【.so和dll、pyd】、等等。
程序:控制启动流程加载模块。本程序名为module,加载模块为module1。
import module、from module import name1,name2 == import module,name1=module.name1,name2=module.name2,del module ;
form module import name :本地变量会覆盖模块的变量、模块调用过多难以区分变量来自哪个模块,可读性差。
模块程序不可读取其它模块中的变量。
读取两个程序中相同的变量,必须使用from...import...。
模块包导入类似操作:必须存在sys.path中

module1:

#模块可实现全局变量、函数定义、函数调用
a=3#全局变量
def func():
    b=4
    print("module test","module1_a=%d,mod`ule1_lb=%d"%(a,b))
func()

 module2:

aaa=1
def functest(*args):
    print(list(args))

module3:模块包-必须存在在sys-path中

bbb=1
def functest(*args):
    print(list(args))

module_main:

import sys
from importlib import reload
import module1#导入模块名module
from module2 import functest#导入模块module2中的某个属性,直接调用此属性 == 【from module2 import  *】
import dir.dir1.module3  as module_name #包导入:as起别名  【from dir.dir1.module import functest】
#from. import func 相对导入。。

a=33#程序的全局变量
print(module1.a,a)#调用模块中的全局变量和本地的全局变量,可以重名
module1.a=44#可以修改模块中的全局变量
module1.func()#调用模块中的函数【模块的属性】属性a值已经改变位44
reload(module1)#重载模块,还是之前的值
if 'module1' in list(sys.modules.keys()):print("module1 in modules ")#取出modules中的key值并列表化,用于判断模块是否加载
functest("module2_","test")#直接调用module2中的函数
#print(sys.path)
module_name.functest("123")#包导入调用
D:\py\venv\Scripts\python.exe D:/py/module_main.py
module test module1_a=3,module1_b=4
3 33
module test module1_a=44,module1_b=4
module test module1_a=3,module1_b=4
module1 in modules 
['module2_', 'test']
['123']

Process finished with exit code 0

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值