Python模块的使用

Python模块介绍

Python模块,是Python程序中的一种可重用的代码组织形式。通过模块,可以将一组函数、类或变量组织在一起,并封装在模块中,以便在其他程序中使用。

模块可以包含可执行代码、函数、类和变量等。在Python中,模块的创建通常是为了实现某种特定的功能或任务,例如数据处理、网络编程、图形界面开发等。

使用模块的好处包括:

  1. 重用代码:你可以使用别人已经编写好的模块,无需从头开始编写代码。这样可以节省时间和精力,提高开发效率。
  2. 代码组织:通过将相关的代码组织在一个模块中,可以使代码更加清晰、易于维护和调试。
  3. 加密和保护:通过将核心代码放在模块中,可以保护你的代码不被他人轻易查看或修改。
  4. 功能封装:可以将复杂的功能封装在模块中,使其成为一个独立的功能单元,方便其他程序调用。

Python模块的分类

Python模块主要可以分为以下三类1:

  • 内置模块。Python自带的模块,如 ossysrandom等。
  • 第三方模块。由非官方制作发布的、供给大众使用的Python模块等,如 requestsnumpyscapy等。
  • 自定义模块。用户自己编写的模块,包含特定的函数、类和变量等。

在Python中,一个文件(以“.py”为后缀名的文件)就叫做一个模块,每一个模块在python里都被看做是一个独立的文件。使用模块可以让我们组织代码,使得代码更具有可读性、可维护性,也可以实现代码的重用。

Python导入模块的方式

有以下三种:

  • import 。让程序员按整体取得一个模块,只在第一次载入并运行模块中的代码,如果后续还有import操作,不会重新运行模块代码。
  • from 。让程序员从一个模块中取得某些特定的部分。从另一个模块中用from导入函数或者属性,我们只是得到了拷贝,而不是对源对象的连接。这个时候修改这些属性,是不会修改源文件中的内容。而用import恰好可以其相反的效果。
  • reload 。提供了一种无需停止Python程序就可以重载模块代码的方法。Python会在模块第一次导入的时候,把模块编译成对应的字节码文件。

判断文件类型

# 执行一个py文件的方式:
# 在cmd执行,在python执行 : 直接执行这个文件 - 以脚本的形式运行这个文件
# 导入这个文件

# 都是py文件
# 直接运行这个文件 这个文件就是一个脚本
# 导入这个文件 这个文件就是一个模块

# 当一个py文件
# 当做一个脚本的时候 : 能够独立的提供一个功能,能自主完成交互
# 当成一个模块的时候 : 能够被导入这调用这个功能,不能自主交互

# 一个文件中的__name__变量
# 当这个文件被当做脚本执行的时候 __name__ == '__main__'
# 当这个文件被当做模块导入的时候 __name__ == '模块的名字'

名字的查找顺序

1. 先从内存中查找
2. 再从内置模块中查找
3. 最后去环境变量sys.path中查找

以后遇到模块找不到的情况:
    1. 把模块所在的路径添加到sys.path中
        import sys
        sys.path.append(r'D:\Python27\day20\aaa\bbb')
    2. 使用from...import句式
        from aaa.bbb.ccc import m1
        from aaa.bbb.ccc.m1 import f1

相对导入和绝对导入

"""在导入模块的时候,模块的查找始终以执行文件所在的路径为准"""

绝对导入:
    它始终是以执行文件所在的sys.path路径为基准查找

相对导入:
    """
        .(句点符)
        . 代表的是当前路径
        .. 代表的是上一级路径    
    """
# 相对导入可以打破始终以执行文件及准的查找顺序
from .ccc import m2
from .ccc.ddd import m2

只要py文件中出现了相对导入语句(.开头的语句),那么,这个文件就不能当成执行文件了,只能被导入

包的使用

什么是包?
    就是文件夹,其实就是文件夹中包含了一些列的py文件(模块)
    # 包就是一些列模块的组合
包和模块有什么区别呢?
    包中有一个特殊文件:__init__.py文件

直接导入包 ,需要通过设计init文件,来完成导入包之后的操作
导入一个包
不意味着这个包下面的所有内容都是可以被使用的
导入一个包到底发生什么了?
相当于执行了这个包下面的__init__.py文件


绝对导入 :
在执行一个py脚本的时候,这个脚本以及和这个脚本同级的模块中只能用绝对导入
缺点
所有的导入都要从一个根目录下往后解释文件夹之间的关系
如果当前导入包的文件和被导入的包的位置关系发生了变化,那么所有的init文件都要做相应的调整

相对导入 :
不需要去反复的修改路径
只要一个包中的所有文件夹和文件的相对位置不发生改变
也不需要去关心当前这个包和被执行的文件之间的层级关系
缺点
含有相对导入的py文件不能被直接执行
必须放在包中被导入的调用才能正常的使用

import urllib # urllib是一个包,单纯的导入一个包啥也不会发生,包中的request.py也不能用
urllib.request

from urllib import request
print(request)

如果我们希望导入包的时候,能够顺便把模块也导入进来
需要设计init文件
绝对目录的导入\相对目录的导入各有千秋

 

软件开发目录规范

软件开发目录规范就是跟项目中得文件夹起合适的名字的!

项目名:
    bin 
        # 放启动文件的 run.py start.py manage.py...
    如果你的启动文件只有一个,也可以不要bin文件夹,可以把启动文件写在项目的跟下
    
    conf (config:配置) 
        # 放项目的配置文件
        settings.py
        '''就是一些初始化的数据'''
    core # 核心的
        # 写一些项目的核心逻辑
        src.py 
            def login():
                pass
            def register():
                pass
    lib # library 库
        # 这个里面一般写项目使用的公共代码
         common.py
            def outer():
                pass
            
   log
      # 日志:就是记录一些在代码运行过程中发生的一些事情,可以是正确的,可以是异常的
        log.log
        
   db
     # database
      跟项目相关的数据存储都存在db、data
        
    api/
        # 接口层
   # 当你自定义文件夹名字的时候,一定要是见名知意, 一定不能出现中文的
setup.py  # 安装模块使用的 python setup.py ...
|-- requirements.txt # 目前用不到---> 

        taobao
            time
             os
             requests
             xml
             ...
        # 命令:  
            reqeusts == 1.11.1
            xml = 1.1.1
     # 命令:       
|-- README
    # 就是项目的说明书
 


 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值