模块

1.模块:

  import一个模块相当于执行了这个模块

2.在import模块的时候发生的事情

  1.寻找模块

  2.如果找个了这个模块,就开辟一个内存空间,并执行这个模块

  3.把这个模块中的所有用到的名字都收录到这个开辟的内存空间中

  4.创建一个变量来引用这个模块的空间

3;模块特点:

  1.同一个模块在同一个py文件中不会被重复导入

  2.模块开辟的内存空间与文件的内存空间始终是隔离的

  3.自定义的模块的名字命名格则需要符合变量的命名格则

import Student_message
Student_message.study()

4,导入多个模块,可以一行导入多个,但是不推荐这样做,因为不符合pep8规范

  并且导入的模块应该按照内置,第三方,自定义的顺序导入,并且两两之间空一行 

  目的是为他人使用自己的代码时,能够轻易区分这些模块.

5.给模块起别名.  

  

  import study as a 

    a.name
    study.name #原模块名引用无效
def file_1(read):
    if read == 'json':
        import json
        with open('path','w') as f:
            json.dump([1,2,3,4,5],f)
    elif read == 'pickle':
        import pickle
        with open('path','w') as f:
            pickle.dump([1,2,3,4,5],f)
            
# 使用模块别名简化代码
def file_1(read):
    if read == 'json':
        import json as a
    elif read == 'pickle':
        import pickle as a
    with open('path','w') as f:
        a.dump([1,2,3,4,5],f)

6.模块搜索路径:

  一个模块能否可以导入,就看这个模块所在的目录在不在sys.path中

  正常的sys.path中除了内置,扩展模块所在的路径之外,

  只有一个路径是永远不会出问题:直接执行这个文件所在的目录

import sys
print(sys.path)

路径报错 # ModuleNotFoundError,把文件所在目录的路径加到sys.path中

  

import sys
sys.path.append(r'E:1_pycharmvenv')
import study

7.两种运行一个py文件的方式:

  直接运行:cmd python xx.py   pycharm 脚本

  __name__ == '__main__' 

  导入它:模块

  __name__ == '模块名'

8.from import的过程

  找到模块名

  开辟内存空间,执行模块

  所有模块中的名字都存到这个内存空间中

  建立一个引用name,read2分别引用模块空间中的名字

from study import name
print(name)
from study import name,read2
name = 'alex'
read()

  

from study import name,rand1,read2
from study import name as a,read1 as b,read2 as c 
from study import * #默认所有可以调用,但是加了__all__[]后,只有里面有的名字才可以用,或者再导入一次要使用的名字

 9:包

  从包中导入模块:

  

import glance2.api.policy as policy
policy.get()
# 2
from glance2.api import policy
policy.get()
# 3
from glance2.api.policy import get
get()

  导入包:

   绝对导入:glance2.api.policy.get()

     导入包的过程发生了什么?

      相当于执行了这个包的__init__.py文件

      sys.patn中的内容,永远是当前你执行的文件

         相对导入: 运用了相对导入的文件,不能被直接执行

    '.'表示当前目录

    '..'表示上级目录

         import glance3

    form outer import glance3

  

原文地址:https://www.cnblogs.com/lijinming110/p/9606379.html