当前位置: 首页 > article >正文

Python——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 *,可以直接使用包里面的字段,这些字段已经复制到了这个文件的新包里面

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


http://www.kler.cn/news/156588.html

相关文章:

  • Linux进程通信——内存映射mmap
  • 搜索引擎高级用法总结: 谷歌、百度、必应
  • C 语言-结构体
  • Android 各平台推送通知栏点击处理方案
  • Kubernetes实战(六)-多系统架构容器镜像构建实战
  • 深入理解JVM内存空间的担保策略
  • 安卓1.0明显是基于linux内核开发的,安卓1.0是不是linux套壳?
  • 用Python实现石头剪刀布的游戏(扩展)
  • eNSP实验
  • 【unity3D】unity中如何查找和获取游戏物体
  • MQTT协议理解并实践
  • vmware_ubuntu_双向拷贝问题
  • 大数据技术发展
  • spring mvc理解
  • 微信开发者工具请求所有接口都出现502,使用postman测试正常
  • 短视频赛道入行电商,一场行业的风波正在来袭!
  • 初学者如何入门Generative AI:看两篇综述,玩几个应用感受一下先!超多高清大图,沉浸式体验
  • 算法通关村第四关—栈的经典算法问题(白银)
  • ★136. 只出现一次的数字(位运算)
  • 前端 JavaScript 与 HTML 怎么实现交互?
  • C语言从入门到实战——常用内存函数的了解和模拟实现
  • controller能接收到数据有数据但是前端无法显示数据
  • JS实现桶排序
  • LED恒流开关调节器FP7123,提供稳定电流,提升LED产品效果!
  • SpringBoot+Redis获取电脑信息
  • kicad源代码研究:参照Candence实现工程管理
  • 【恋上数据结构】哈夫曼树学习笔记
  • 全新仿某度文库网站源码/在线文库源码/文档分享平台网站源码/仿某度文库PHP源码
  • 在java中如何解决in unnamed module @0x602ff1d9得问题
  • vGPU_unlock实现消费级显卡虚拟化