当前位置:   article > 正文

Python——import和from import方法总结_from . import

from . import

基本概念:

模块:所谓模块就是一个.py文件,用来存放变量,方法的文件,便于在其他python文件中导入(通过import或from)。

包(package): 包是更大的组织单位,用来组织区别管理多个模块文件。

import 用来导入模块

from 用于从模块中导入工具(可以是某个函数,全局变量,类),也可用as 重命名导入的方法名

import 和 from 常用使用方法:

from A import a1 :从A模块导入a1工具(可以是某个函数,全局变量,类)

import A:导入整个A模块的全部内容(包括全部的函数,全局变量,类)

内存分析:

from...import...会在内存中创建并加载该模块工具的副本,当有另外一个程序导入时,会在内存中浅复制另一个副本(变量而非函数)进行加载,不会共用一个副本。所以程序进行的修改不会影响到被导入的原模块,且不同程序之间不会互相影响。

import...方法导入模块会在内存中直接加载该模块的全部属性。当出现多个程序导入该模块时,会共用一个模块,程序之间会互相影响,包括原模块。

使用场合:

当多个程序需要同时导入一个模块并且都是访问时,使用import 可以节省内存空间

当多个程序需要同时导入一个模块当其中一个需要修改模块,那么修改的模块的程序应该使用from来导入模块

使用特点:

import a:使用都要加上a这个包名,比如a.data,表示用的都是a包里面的data字段

form a import *,可以直接使用包里面的字段,这些字段已经复制到了这个文件的新包里面

  1. #a.py
  2. data=[1,2,3]
  3. def run():
  4. print(data)
  1. #b.py
  2. from a import run,data
  3. data[0]=5 #类似赋值,b里面的data和a里面的data指向同一个对象,这么做对两者都有影响
  4. print(data) #输出[5,2,3]
  5. run()#输出[5,2,3]
  6. data=100 #由于直接改变了data的指向,所以不会影响源模块a
  7. print(data) #输出100
  8. run()#输出[5,2,3]
  1. #c.py
  2. import a
  3. #由于是直接import a 所以都是从源模块a里面拿出来的,所以这里的改变都会影响源模块a
  4. #可以理解为有着作用域 a.的限制
  5. a.data[0]=5
  6. print(a.data) #输出[5,2,3]
  7. a.run() #输出[5,2,3]
  8. a.data=100 #因为这里影响的是a里面的data
  9. print(a.data) #输出100
  10. a.run() #输出100

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/657876
推荐阅读
相关标签
  

闽ICP备14008679号