python 模块

本文介绍了Python中模块的概念及好处,包括模块的导入方式、位置查看、自定义模块的方法等。同时,还讲解了如何创建和使用包来组织相关模块,以及模块的打包、安装过程。此外,还涉及了一些高级主题,如模块搜索路径的动态添加、循环导入问题的解决等。
  • 1.介绍
    • 在python中一个py文件就是一个模块
    • 好处:最大的好处是大大提高了代码的可维护性。其次,编写代码不必从零开始。当一个模块编写完毕,就可以被其他地方引用。
  • 2.查看模块的位置
    • 模块.__file__
  • 3.模块的导入和使用方法
    • 1.import
      • import 模块名
      • 模块.方法(参数)
      • 对象=模块.类名(参数)
      • print(模块.全局变量)
    • 2.from 模块名 import 全局变量,类,函数名    --》可以导入多个用逗号隔开
      • 无需加模块名 ,直间调用
      • print(全局变量)
      • 方法(参数)
      • 对象=类名(参数)
    • 3.from 模块名 import *
      • 无需加模块名,直接调用
      • 在模块中可以添加 __all__=[]  --》对于前两种导入方法无效
      • 如果一个文件中有__all__变量,那么也就意味着这个变量列表中的元素,会被from xxx import *时导入
      • 当有些功能你不像让别人用的时候就可以使用这种方式。
  • 4.查看模块搜索顺序
    • import sys    print(sys.path)
  • 5.自定义模块
    • 当我们在模块中测试自定义模块的时候
    • if __name__=="__main__":
      • 测试体
    • 当没有使用    if __name__=="__main__":
    • 其他地方导入模块也会执行测试体的语句
    • print(__name__)  在本模块中,显示结果为"__main__"
    • 在被导入的情况下,显示结果为模块名
  • 6.python 包
    • 包将有联系的模块组织在一起,即放到同一个文件夹下,并且在这个文件夹创建一个名字为__init__.py 文件,那么这个文件夹就称之为包。
    • 有效避免模块名称冲突问题,让应用组织结构更加清晰
    • 导入包的模块
      • 1.import 包名.模块
        • 使用  print(包.模块.全局变量)   包.模块.方法(参数)  对象=包.模块.类名(参数)
      • 2.from 包名 import 模块名
        • 使用 print(模块.全局变量)   模块.方法(参数)  对象=模块.类名(参数)
      • 3.from 包名 import *
        • 包文件夹下必须有 __init__.py 文件   --》 对于前两种方法无效
        • 在__init__.py 文件中定义__all__变量,那么也就意味着这个变量列表中的元素,会被from 包名 import *时导入
        • __all__=["模块1","模块2"。。。]   需要加载的模块
        • 当导入模块时,执行 __init__.py 中的代码
        • __init__.py 中的函数调用方法 :1.import 包名 2.包名.函数名()
  • 7.打包模块
    • 1.和包同一级目录下创建setup.py 编辑
      • from distutils.core import setup
      • setup(name="名字", version="1.0", description="描述", author="作者", py_modules=['msg.sendmsg', 'msg.recvmsg', 'msg.money.msgmoney'])
    • 2.当前目录下执行命令  python setup.py build    构建模块
    • 3.生成发布压缩包执行命令  python setup.py sdist  ——》压缩包文件名:名字-1.0.tar.gz
  • 8.安装模块
    • 1.tar -zxvf 名字-1.0.tar.gz  解压缩模块压缩包
    • 2.进入压缩后文件夹执行  sudo python setup.py install
    • 3.默认安装到 /usr/local/lib/python3.6/dist-packages
    • 4.使用  import 包名.模块名
  • 9.扩展
    • 1.动态添加模块搜索路径
      • import sys
      • sys.path.insert(下标,"路径")
    • 2.交互式模式下,导入模块后,模块更新
      • from imp import *
      • reload("模块名")
    • 3.循环导入
      • 1.
        • A模块导入B模块具体函数 from B import test1
        • B模块导入A模块具体函数 from A import test2
        • 执行A或B报错 importError 循环导入
      • 2.
        • from A import *
        • NameError 未定义
    • 4.hashlib 模块  加密算法
      • import hashlib
      • m=hashlib.md5()                   -->创建对象
      • m.update("你好".encode("utf-8"))   -->encode 解码
      • print(m.hexdigest())   --》加密后内容
    • 5.查看系统默认模块
      • sys.modules()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值