module

module

模块: .py结尾 的 python源代码文件
模块名: 一个标识符,所以需要标识符的命名规则
导入: 模块就像是工具包,想要使用工具包中的工具,就需要先导入
    全局变量 、函数、类 都是提供给外界直接使用的 工具
导入的核心: 就是将该模块执行一遍

模块导入

1)import导入

import 模块名1
import 模块名2
pep8:在导入模块时,每个模块应该独占一行

调用:模块名.工具 --->全局变量,函数,类

import 模块名 as 别名
模块别名: 大驼峰命名法
调用:别名.工具

4)from…import导入

from 模块名 import 工具名
从 某个模块中,导入 部分工具  
调用: 工具名(不需要模块名.)  ---> 全局变量,函数,类

注意:两模块中,存在 同名的函数, 后导入的模块函数 会覆盖先导入的模块函数
    解决方法:  使用 as 关键字 给工具起一个别名
        from func1 import hello as func_hello
        from func2 import hello

from 模块名 import *
从 某个模块中,导入 所有工具(all)
注意:不推荐使用,原因:出现函数重名时,不好排查

模块的搜索顺序

__file__: 每一个模块都有这个内置属性,可以查看模块的完整路径  print(模块名.__file__)

搜索顺序:
    1.当前目录
    2.如果没有,再搜索 系统目录
        开发时,给文件起名,不要和系统的模块文件重名(覆盖问题)

name属性

__name__是一个内置属性,记录着一个 字符串
    被其它模块导入: 就是模块名
    执行当前程序: __main__
    存在意义:__name__ 属性可以做到,测试模块的代码 只在测试情况下被运行,而在 被导入时不会被执行
通过判断__name__是否等于 __main__ 来决定 被导入时,测试代码不会执行
def main():
    测试代码

if __name__ == "__main__":
    main()

包(Package)

包: 一个包含 多个模块的 特殊目录
必须含有一个特殊的文件: __init__.py
命名方式: 与变量名一致, 小写字母_功能名
    eg: hm_message  (package name)
            __init__.py
            send_message.py
            receive_message.py

__init__.py
        指定对外界提供的模块列表
            里面写明了导入时,导入哪些模块  
        #从 当前目录 导入 xx模块
        from . import send_message
        from . import receive_message

你可能感兴趣的:(python)