• 模块和包—Day28


    一、模块

    模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀。

    import的过程:import一个模块的时候,首先创建一个属于my_module的内存空间,加载my_module模块中的所有代码,将my_module中的名字和方法放在my_module的命名空间里,引用时将my_module带到当前名称空间中,用my_module.名字的方式使用。import模块名。

    模块导入的原则:

    1.如果不是必要的需求,所有的模块都有应该在文件的顶端倒入。

    2.关于导入模块的顺序:先导入内置模块,再导入扩展模块,最后导入自定义模块。

    3.模块不会被多次导入

    导入多个模块:import a,b,c

    为模块名起别名:import...as ....用于选择不同的模块来执行同一个功能

    例:有两种摘要算法,json和pickle,根据输入选择用其中一个

    inp = input('json or pickle>>>')
    if inp == 'ison':
        import ison as m
    elif inp == 'pickle':
        import pickle as m
    
    m.dumps({'k':'v'})
    m.loads()

    from...import...过程:创建一个属于my_module的名称空间,将my_module中的名字直接导入到引用模块的文件的名称空间中,在文件中直接使用my_module中的名字。from模块名import模块中的方法。

     from...import...可以导入多个名字,也可以起别名,和import用法一样。

    from模块import* 会默认把模块中所有的名字都导入到全局,和__all__一起使用

    __all__ = ['a','A','func1'] #from 模块名import*时只能导入[]里面的内容

    把模块当作脚本执行

    如果一个py文件被导入了就是一个模块,如果这个py文件直接被执行了,这个被执行的文件就是一个脚本。

    当一个模块被当做脚本执行的时候,__name__是一个字符串数据类型的‘__main__’。

    当一个模块被当做模块倒入的时候,__name__是一个字符传数据类型模块名。

    if __name__ == '__main__':   #可以用来控制.py文件在不同的应用场景下执行不同的逻辑

    编译python文件

    一个文件如果作为模块会经常被导入,每次被导入都要经历一个被编译的过程,编译时会耗费时间,所以模块在第一次导入的时候被编译存在pyc文件里,之后的导入就可以直接用pyc文件中的字节码直接执行了。编译文件提高的是模块加载速递,不能提高程序运行速度。

    二、包

    包就是py文件的集合。

    包的导入也分为两种:import和from...import...,凡是在导入时带点的,点的左边都必须是一个包

    from a.b.c import d   d.get()  #abc都是包

    import a.b.c.d   a.b.c.d.get() #abc都是包

    能不能导入一个包要看sys.path的路径下有没有这个包

  • 相关阅读:
    多路径下使用ASMLIB创建ASM磁盘
    linux7.4开启hugepages
    Oracle 12CR2 RAC 升级
    深度思考比勤奋更重要(转)
    Oracle最大保护模式是有延迟的
    mysql主从安装简记
    Socket 监控服务器运行状态
    12C Sharding 学习安装
    惊喜与局限并存,12c Sharding内测报告抢先看!
    Oracle 12c 分片(Sharding)技术
  • 原文地址:https://www.cnblogs.com/facestore/p/8947577.html
Copyright © 2020-2023  润新知