python 基础十七 模块

模块
1.定义
    用来从逻辑上组织python代码(实现一个功能),本质就是.py结尾的python文件
    模块名就是这个文件名
包:本质就是一个目录(必须带有一个__init__.py文件),用来从逻辑上组织模块
     包内的文件需要导入到__init__.py中,这样在导入包时才有用, __init__.py的编写原则,如何编写__init__.py文件?

 __init__.py的编写
 编写Python代码(不建议在__init__中写python模块,可以在包中在创建另外的模块来写,尽量保证__init__.py简单)
 模块中不使用__all__属性,则导入模块内的所有公有属性,方法和类 。 模块中使用__all__属性,则表示只导入__all__中指定的属性,
 因此,使用__all__可以隐藏不想被import的默认值。 __all__变量是一个由string元素组成的list变量。
 它定义了当我们使用 from <module> import * 导入某个模块的时候能导出的符号(这里代表变量,函数,类等)。
  from <module> import * 默认的行为是从给定的命名空间导出所有的符号(当然下划线开头的变量,方法和类除外)。
 需要注意的是 __all__ 只影响到了 from <module> import * 这种导入方式, 对于 from <module> import <member> 导入方式并没有影响,
仍然可以从外部导入。

     当一个目录内有了__init__.py文件后python解释器就会把这个目录认作一个包,我们就可以导入其中的模块了
     module_name.m1.test()
    

2.导入方法
    import module_name1, module_name2, ...
    from module_name import * : 这种导入方式是直接把目标模块代码拿过来然后再解释,不建议使用
                                导入的模块中如果有名字与当前模块有重复,则会覆盖当前名称
    from module_name import logger as logger_mfkcel: 从目标模块导入指定的代码块并另取名为logger_mfkcel
3.import本质(路径搜索与搜索路径)
    import module_name:
        它的本质是将目标模块解释后再把解释的结果赋值给module_name
        import module_name ---> module_name.py ---> module_name.py的路径 --> sys.path
        根据 sys.path给出的路径集 去搜索这个.py文件
        如果没有搜索到,就会导入失败,解决方法应该在sys.path加入一个需要导入模块的目录的路径 sys.path.append()
        

        导入一个包的本质,就是执行该包下的__init__.py文件
4.导入优化
        当要多次使用一个模块内的代码时,使用 from module_name import ? as ?这样就可以只导入一次,后面在使用时,就直接
       使用了,不用再导入了
5.模块的分类
    a.内置库,标准库
    b.开源库
    c.自定义模块
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值