Python模块

note:
一:简介
    从 Python 解释器退出再进入,那么你定义的所有的方法和变量就都消失了。
    为此 Python 提供了一个办法,把这些定义存放在文件中,
    为一些脚本或者交互式的解释器实例使    用,这个文件被称为模块。
    模块是一个包含所有你定义的函数和变量的文件,其后缀名是.py。
    模块可以被别的程序引入,以使用该模块中的函数等功能。
    这也是使用 python 标准库的方法。
    模块中创建私有属性和方法,将不会被其他模块导入。除非添加__all__ = [变量, 值]

二:模块的导入方法

    (1)import module

    没有把直接定义在module中的函数名称写入到当前符号表里,只是把模块的名字写到了那里
    用模块名来访问函数.
    常用函数赋一个别名:myName = module.funcName

    (2)from … import 语句
    
    不会把整个fibo模块导入到当前的命名空间。
    
    (3)from … import *

    把一个模块的所有内容全都导入到当前的命名空间也是可行的。
    (4)模块使用方法:dir()---->help()----->print(module.__doc__)
                         print(module.__file__)阅读源码

三:模块深入学习
    
    (1)模块除了方法定义,还可以包括可执行的代码。这些代码一般用来初始化这个模块。
         这些代码只有在第一次被导入时才会被执行。
         每个模块有各自独立的符号表,在模块内部为所有的函数当作全局符号表来使用
    (2)模块搜索路径
        首先,Python 会在内建模块中搜寻 foobar;
        若未找到,则 Python 会在当前工作路径(当前脚本所在路径,或者执行 Python 解释器的路径)
        中搜寻 foobar;
        若仍未找到,则 Python 会在环境变量 PYTHONPATH 中指示的路径中搜寻 foobar;
        若依旧未能找到,则 Python 会在安装时指定的路径中搜寻 foobar;
        若仍旧失败,则 Python 会报错,提示找不到 foobar 这个模块

五:__name__属性

    if __name__ == '__main__':
           print('程序自身在运行')
    else:
           print('我来自另一模块')

    dir()函数查看模块中所有的方法和属性

六:包
    Python 允许用户把目录当成模块看待。
    这样一来,目录中的不同模块文件,就变成了「包」里面的子模块。
    包目录下还可以有子目录,这些子目录也可以是 Python 包。
    这种分层,对模块识别、管理,都是非常有好处的。
    特别地,对于一些大型 Python 工具包,内里可能有成百上千个不同功能的模块。
    若是逐个模块发布,那简直成了灾难。
    

七:包的目录结构

    (1)要求每一个「包」目录下,都必须有一个名为 __init__.py 的文件
    __init__.py 中可以保留一些初始化的代码——比如引入依赖的其他 Python 模块。
    (2)https://liam0205.me/2017/07/23/modules-and-packages-of-python/参考文章

八:包的调用

    同模块的调用!

九:源码和帮助文档的使用

    dir()
    help()
    .__file__存放源码的路径

 1 # 熟悉几种导入模块的方法
 2 
 3 
 4 def func_1(func_name, *numbers):
 5     print(func_name, numbers)
 6     return 'Done'
 7 
 8 
 9 money = 200  # 模块里面的全局变量
10 
11 
12 def add_money():
13     global money
14     money = money + 1
15     return money



原文地址:https://www.cnblogs.com/faithyiyo/p/9719524.html