zoukankan      html  css  js  c++  java
  • python 基础 模块

    模块

    模块:模块是一系列功能代码的结合体。

    模块的三种来源:

    1.python内置的 (python解释器,拿来用)
    2.第三方的(别人写,拿来用)
    3.自定义的(自己写,自己用,给别人用)
    

    模块的四种表现形式:

    1.使用python代码写的py文件(了解)
    2.编译后的共享库DLL或者是C或者C++库(了解)
    3.包下面带有__init__.py的一组py文件
          - 包
              - __init__.py
              - 模块1.py
              - 模块2.py
    4.python解释器提供的内置py文件
    
    

    入模块发生的事情

    1.先执行当前执行文件,会产生当前执行文件的名称空间
    2.加载被导入模块时,会执行被导入模块代码,会产生被导入模块中名称空间
    3.将被导入模块中的名称空间加载到内存中
    

    首次导入模块

    只会加载一次,将加载后的模块的名称空间放入内存中,
    下次获取名字时优先从内存中获取。
    import demo
    import demo
    

    给模块起别名

    import 模块 as 模块的别名
    

    模块的两种导入方式

    import 模块名  (不能加.py后缀)
    from 包/模块 import 模块/模块中的名字(函数名或变量名)
    

    解决循环导入问题的两种方式

     - 在名字定义后导入模块
     - 在函数内部导入模块,让被导入的模块加载到局部名称空间中。
    

    包:

    包是内部有__init__.py的文件夹,用于管理模块。
    

    软件开发目录规范

            - 项目的根目录: ATM
                - conf: 存放配置文件
                - core: 存放py文件,核心业务
                - interface: 接口,做逻辑处理
                - db: 存放数据的   文件
                - log: 存放日志文件
                - lib: 存放公共方法文件
                - bin: 存放启动py文件
                - readme: 项目说明书
                - 不要bin目录,在外层添加启动文件
    
    

    time模块

            - 获取时间戳:给机器看的
                time.time()
            - 格式化时间(Format String): 给人类看的
                年月日
                time.strftime('%Y-%m-%d')
                时分秒
                time.strftime('%H-%M-%S')
                time.strftime('%X')
    
            - 格式化时间对象(struct_time)
                time_obj = time.localtime(time.time())
                time_obj.tm_year
    

    datetime模块:

           # 获取日期时间
            datetime.datetime.today()
            datetime.datetime.now()
            datetime.date.today()
    
            # 获取日期"隔间"对象
            空的间隔_obj = datetime.datetime.timedelta()
            print(空的间隔_obj) ---> 0:0:0
    
            # 获取7天时间间隔
            day7_obj = datetime.datetime.timedelta(days=7)
    
            # 时间计算公式:
                - 日期时间 = 日期时间 + or - 时间对象
                - 时间对象 = 日期时间 + or - 日期时间
    
            # 获取当前时间7天后的时间
                day7_obj = datetime.datetime.timedelta(days=7)
                - 日期时间 = 日期时间 + or - 时间对象
                current_time = datetime.datetime.now()
                later_time = current_time + day7_obj
                print(later_time)  # 2019-11-25 09:18:XX
    

    random模块

     - 可以随机获取数据
            - 随机对数据进行操作
            - random.random():
                - 随机获取0——1之间的某一个小数。
    
            - random.randint(1, 100):
                - 随机获取1—100的某一个整数。
    
            - random.choice(可迭代对象):  注意: 有索引的可迭代对象
                - list, tuple
                - 随机获取可迭代对象中某一个值
    
            - random.shuffle():  注意: 不可变类型不可被乱序
                - list
                可以对某个有索引的可迭代对象进行乱序。
    
            - 随机获取手机短信验证码:
                import random
                def get_code(n):
    
                    res = ''
    
                    for line in range(n):
    
                        # 获取大小写字母
                        lower_str = chr(random.randint(97, 122))
                        upper_str = chr(random.randint(65, 90))
    
                        # 获取数字
                        number = str(random.randint(0, 9))
    
                        code_list = [lower_str, upper_str, number]
    
                        # 每次循环随机取一个值
                        code = random.choice(code_list)
                        res += code
    
                    return res
    

    os模块

            - 与操作系统交互
    
            # 获取项目根目录,获取当前文件的目录
            project_path = os.path.dirname(os.path.dirname(__file__))
    
            # 路径的拼接
            os.path.join()
    
            # 判断文件或文件夹是否存在
            os.path.exists()  # 存在 True  不存在False
    
            # 判断文件夹是否存在
            os.path.isdir()
    
            # 判断文件是否存在
            os.path.isfile()
    
            # 获取某个文件夹下所有文件的名字,然后装进一个列表中
            file_list = os.listdir(文件夹的路径)
    
            # 创建文件夹与删除文件夹
            os.mkdir(文件夹路径)  # 只传文件夹名字,会保存在当前执行文件的目录下
            os.rmdir(文件夹路径)  # 注意: 只能删除空的文件夹
    

    enumerate: 获取可迭代对象中索引与值

    enumerate(可迭代对象)  # 注意: 可迭代對象中若是字典,则取字典中所有的key
    返回的enumerate对象 ---> 相当于迭代器对象
    list(迭代器对象) ---> 列表
    

    sys模块

            - 与python解释器交互的模块
    
            sys.path  # 获取python解释器的环境变量路径 ---》 list[一堆路径]
    
            # 将当前项目根目录添加到环境变量中
            sys.path.append(
                当前项目的根目录路径
            )
    
            # 获取到操作系统中cmd(终端)的命令行
            # 注意: 通过python执行py文件时,后面跟着的命令行
            sys.argv  ----》 执行py文件的权限认证
    
    

    hashlib模块

            - 加密模块
            - MD5()
                md5_obj = hashlib.md5()
                md5_obj.update('123456'.encode('utf-8'))  # 只能传bytes类型数据
                sal = 'python13期是最好的一期学生!'
                md5_obj.update(sal.encode('utf-8'))
                # 拿到加密后的结果
                res = md5_obj.hexdigest()  # 必须要加括号
                print(res)  # ---> 加密后的字符串
    
            hashlib.md5().update('123456'.encode('utf-8'))
            hashlib.md5().hexdigest()  # ---> 默认的加密字符串
    

    序列化:

    将其他数据类型转换成字符串,可以写入文件中。
    

    反序列化

    从文件中读取字符串,然后转成其他数据类型。
    

    json

    json.dumps():
        python数据 ----> json数据 ----> 字符串 ----> 写入文件中
        with open('文件名', 'w', encoding='utf-8') as f:
            res = json.dumps(数据)
            f.write(res)
    
    json.loads():
    从文件中读数据 ---》 字符串 ---》 json数据 ---》python数据
        with open('文件名', 'r', encoding='utf-8') as f:
            res = json.loads(f.read())
            print(res)  # python数据
    
    json.dump():
        with open('文件名', 'w', encoding='utf-8') as f:
        json.dump(数据, f)
        # 省略了f.write()
    
    json.load():
        with open('文件名', 'w', encoding='utf-8') as f:
            # 省略了f.read()
            json.load(f)
    

    json数据

    是一个第三方的特殊数据格式。
    

    使用json数据格式的好处:

    让不同语言的数据实现共享。
    

    json模块的优缺点

    优点:
    - 支持跨平台,所有语言使用。
    
    缺点:
    - 可以支持python的数据类型有限。
    - 存取速度相较于pickle要慢
    

    pickle 模块的优缺点

            优点:
                - 可以支持python所有数据类型
                - 可以直接写入bytes类型的数据
                - 存取速度相较于json要快
    
            缺点:
                不支持跨平台,只能给python使用。
    
    

    collections

    - 具名元组
            from collections import namedtuple
            namedtuple('坐标', 'x y')
            namedtuple('坐标', ['x', 'y'])
            obj = namedtuple('坐标', ('x', 'y'))
            new_obj = obj(10, 20)
            print(new_obj)  # 坐标(x=10, y=20) ---> 对象
    
            - 有序字典
            from collections import OrderedDict
            # 基于python默认的字典,“派生” 而来的。
            order_dict = OrderedDict({'x': 10, 'y': 20})
            order_dict.get('x')
    

    openpyxl

            - 是一个第三方模块
                pip3 install openpyxl
    
            用来操作Excel文件的
    
            - 如何创建
            from openpyxl import WorkBook
            wb_obj = WorkBook()
            # 创建一个工作页
            wb1 = wb_obj.create_sheet('工作页的名字', 工作页的索引)
            wb1['A18'] = 200
            wb_obj.save(r'D:项目路径python13期day17Excel文件名.xlsx')
    
            - 如何读取
            from openpyxl import load_workbook
    
            wb_obj = load_workbook(r'D:项目路径python13期day17Excel文件名.xlsx')
            wb1 = wb_obj['工作页的名字']
            print(wb1['A18'].value)  # 200
    
    
  • 相关阅读:
    Spark之 SparkSql整合hive
    Spark之 使用SparkSql操作Hive的Scala程序实现
    Spark之 RDD转换成DataFrame的Scala实现
    Spark之 SparkSql、DataFrame、DataSet介绍
    Spark之 RDD
    Spark scala和java的api使用
    设计模式之四观察者模式
    设计模式之三静态代理模式
    设计模式之二装饰者模式
    设计思想之二面向接口编程
  • 原文地址:https://www.cnblogs.com/WQ577098649/p/11947043.html
Copyright © 2011-2022 走看看