python 模块和包

 一、模 块                           

  什么是模块:

  已经写好的一组功能的集合
  别人写好的函数 变量 方法 放在一个文件里 (这个文件可以被我们直接使用)这个文件就是个模块
  py dll文件 zip文件

如何自己写一个模块:
  
  
创建一个py文件,给他起一个符合变量命名规则的名字,这个名字就是模块名

   在导入模块的过程中发生了什么?
    
   导入一个模块就是执行一个模块

 import 导入模块     

#怎么使用my_module模块中的名字
print(my_module.name)
print(my_module.read1)
my_module.read1()

# import的命名空间,模块和当前文件在不同的命名空间中
name = 'asdf'
def read1():
    print('main read1')

print(name)
print(my_module.name)

# 模块是否可以被重复导入
# import my_module
# import my_module
# 怎么判断这个模块已经被导入过了???
# import sys
# print(sys.modules)
 模块导入的过程中发生了什么?

找到这个模块
判断这个模块是否被导入过了
如果没有被导入过
创建一个属于这个模块的命名空间
让模块的名字 指向 这个空间
执行这个模块中的代码
name = 'egon'
def read1():
    print('main read1')


print(name)
print(my_module.name)
my_module.read2()

   给模块起别名,起了别名之后,使用这个模块就都使用别名引用变量了

   导入多个模块

    import os,time

    import os as o,time as t

    规范建议 模块应该一个一个的导入 :

    内置模块 ===> 扩展(第三方)模块 ===> 自定义模块

from import 导入模块

  如何使用 from import

    需要从一个文件中使用哪个名字,就把这个名字导入进来

    from my_module import name

   from import的过程中仍然执行了这个被导入的文件

    from my_module import read1
    import谁就只能用谁
    read1()
    from my_module import read2
    read2()

  当前文件命名空间和模块的命名空间的问题
    from my_module import read1
    def read1():
    print('in my read1')
    read1()
  
    from my_module import read2
    read2()

  from import导入的过程中发生了什么事儿?
    1.找到要被导入的模块
    2.判断这个模块是否被导入过
    3.如果这个模块没被导入过
      创建一个属于这个模块的命名空间
      执行这个文件
      找到你要导入的变量
      给你要导入的变量创建一个引用,指向要导入的变量

二、包                                

原文地址:https://www.cnblogs.com/JinMuBaoBao/p/9524778.html