模块引入和包相关内容

模块就是一个包含了python定义和声明的文件,文件名就是模块的名字加上.py后缀

  • import加载的模块一共分成四个通用类别

1.使用python编写的py文件

2.已被变异为共享库或者DLL或C或者C++的扩展

3.包好一组模块的包

4.使用c编写并连接到python解释器的内置模块

  • 导入模块过程:

1.如果已经导入则不再导入

2.如果未导入,则为导入的模块创立新的名称空间

3.在新创建的名称空间中运行该模块在当前模块中引用的名字

4.创建模块的名字.使用该名称作为该模块在当前模块中引用的名字

  • global表示把全局的内容引入到局部。但是这个局部指的是py文件。即global指向的是模块内部。并不会改变外部模块的内容
  • 如果在不同的模块中引入了同意模块。并且在某一个模块中改变了被引入模块中的全局变量。则其他模块看的值也跟着变。原因是python的模块只会引入一次,大家共享同一个名称空间
  • 一次可以引入多个模块
    import time, random, json, mokuai

    正确的导入模块的顺序:

1.所有的模块导入都写在最上面,这是最基本的

2.先引入内置模块

3.在引入拓展模块

4.最后引入自己定义的模块

  • 如果当前文件中出现了重名的变量时,会覆盖掉模块引入的那个变量
  • 我们自己创建的py文件的名字不要和系统内置的模块重名**

是一种通过'.模块名'来组织python模块名称空间的方式,包内必须存在__init__.py文件。包的本质就是一个文件夹,提高程序的结构性和可维护性

绝对导入,以最顶级包作为起始

相对导入:用. (当前文件夹os.mkdir(f'./info_ftp/{username}'))或者.. (上一级文件夹)作为起始

#绝对导⼊入 
from glance.cmd import manage 
manage.main() 
#相对导⼊入 
# 这种情形不不可以在versions中启动程序. 
#  attempted relative import beyond top-level package
from ..cmd import manage 
manage.main() 

包的注意事项:

1.关于包相关的导入语句也分为import和from xxx import xxx两种,但无论使用哪种,无论在什么位置,在导入时都必须遵循一个原则:凡是在导入时导带点的,点左边的都必须是一个包。否则报错。可以带一连串的点,比如a.b.c
2.import导入文件时。产生名称空间中的名字来源于文件,即包下的__init__.py,导入包本质就是在导入该文件
3.包A和包B下游同名模块也不会冲突,如A.a和B.a来自两个名称空间
原文地址:https://www.cnblogs.com/gracenana/p/10235563.html