二十四、Python--模块与包

目录

0.模块是什么?包?

        模块

        包

1.模块的导入

        ①导入方式:

                直接导入模块

                从模块里导入函数/从包里导入模块

                导入所有函数(不推荐)

         ②同一模块重复导入只会执行一次

        ③如果导入的模块名相同,会使用后导入的

        ④. 使用名字导入

·        ⑤.模块的运行

        ⑥.相对导入与绝对导入

        ⑦.模块的查找顺序

2.下引号

3.文件与模块的执行过程

 4.模块的打包与发布

        1.创建模块包 需要一个__inti__.py文件

        2.在模块包同级目录下生成配置文件setup.py

        3.运行python3 setup.py check

        4.运行python3 setup.py sdist

         5.安装

 5.软件的目录规范


0.模块是什么?包?

        模块

                定义:

                        就是Python文件,里面定义了很多的函数、类、变量

                分类:

                        标准模块(标准库):无需安装,Python自带

                        第三方库:需要安装

                        自定义模块:自己写的Python文件

        包

                实际上就是一个目录

                包的结构目录里可以有一个__init__.py模块

        #Python2和Python3的一个区别

        Python2中__init__.py是必须要有的,Python3中不必要

1.模块的导入

        ①导入方式:

                直接导入模块

                

                从模块里导入函数/从包里导入模块

                 

                导入所有函数(不推荐)

                 

         ②同一模块重复导入只会执行一次

第一次导入的时候,就会将这个模块加载到内存空间,下次导入的时候会先查看内存空间里是否有

        ③如果导入的模块名相同,会使用后导入的

         可以使用别名,来导入相同模块的包

        ④. 使用名字导入

# import importlib 

# st = importlib.import_module(String)

# print(st.digits)

·        ⑤.模块的运行

                # 1.直接运行

                # 2.模块导入运行

        ⑥.相对导入与绝对导入

#from ..subpack02 import subpack02

# 相对路径

#from pack01.subpack02 import subpack02

# 绝对路径

# 推荐使用相对导入,直接运行的文件在哪里,那一层的目录就叫top-level,之下的模块不可访问top-level同级的文件。

        ⑦.模块的查找顺序

 #当import 一个模块时,首先会在sys.modules中查找是否加载了此模块,如果加载了则只是将模块的名字加入到正在调用import模块的Local名字空间,如果没有加载则从sys.path目录中按照模块名称查找模块文件。如果都没有找到模块名就报错

sys.modules是一个字典,sys.path是一个列表

 #第一个引号是当前目录下,最后一个引号内容是第三方库下载路径,pip install下载的模块会放在这个路径下

#Python查找包的顺序在sys.path中逐次查询,即从当前目录开始,至第三方库下载目录为止

#如果当前目录下有和系统库重名的模块,会优先导入当前目录下的模块

2.下引号

        标识符是用来标识某种对象的名称。以下划线开头的标识符是有特殊意义的。

        以单下划线开头的变量(_foo)

                表示保护对象,不能用from xxx import *导入包和模块

        以双下划线开头的(__foo)

                表示私有对象,不能用from xxx import *导入包和模块

        以双下划线开头和结尾的(__foo__)

                代表Python中特殊方法专用的标识,不建议用户使用

        #__int__ __name__ __file__ --》python内置的变量

        #__init__ 初始化

        #__name__ 作为主程序显示为__main__ 作为导入模块时显示为相对于top level的文件路径

        #__file__ 文件绝对路径

 # -*- coding: utf-8 -*-

# @Time : 2022/3/1 15:38

# @Author : Seesunman

# @File : __init__.py

print("This is init")

__all__ = ["model","_model"]

#指定*要导入的内容

3.文件与模块的执行过程

        先进行词法语法检查

        在内存中生成PyCodeObject

        执行PyCodeObject

#当模块导入运行的时候,会在同级目录下生成__pycache__目录,将生成的字节码保存在此目录下

#下一次使用的时候会直接运行字节码文件

#python3 生成__pycache__目录

#Python2 只会在模块同居目录生成.pyc文件

#当模块直接运行时,不会保存字节码

 4.模块的打包与发布

        1.创建模块包 需要一个__init__.py文件

        2.在模块包同级目录下生成配置文件setup.py

from setuptools import setup, find_packages
setup(
#包名
name = "modtest",
#官网
url = "http://www.baidu.com",
#版本
version = "0.0.1",
#指定要打包的模块和包
packages = find_packages(),
#作者
author = "man",
#邮箱
author_email = "1916259704@qq.com",
#依赖
install_requires = ['xlrd>=1.1.0'],
#描述信息
description = "this is test pack"
)

        3.运行python3 setup.py check

                进行语法检查

        4.运行python3 setup.py sdist

                生成tar.gz压缩包,会在同目录下生成一个dist目录

                #打包好的安装包文件放在dist目录下

         5.安装

                进入sdist目录

                pip3 install modtest-0.0.1.tar.gz

 5.软件的目录规范

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值