bubbleeee

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  23 随笔 :: 0 文章 :: 2 评论 :: 16125 阅读
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

from xx import xxx 和 import xxx

from A import a:为从A模块导入a(函数,全局变量,类);在内存中创建副本,与其它导入相同模块的不共用

 

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

#A.py
data=[1,2,3]
 
def run():
    print(data)

通过from import 导入

复制代码
#b.py
from A import run, data
 
data[0]=5 #类似赋值,b里面的data和A里面的data指向同一个对象,这么做对两者都有影响
print(data) 
run()
 
data=100 #由于直接改变了data的指向,所以不会影响源模块A
print(data)
run()
复制代码

output:

[5,2,3]
[5,2,3]
100
[5,2,3]

 

通过import导入

复制代码
#c.py
import A
#由于是直接import a 所以都是从源模块a里面拿出来的,所以这里的改变都会影响源模块a.可以理解为有着作用域 a.的限制
A.data[0]=5 
print(A.data)
A.run()
 
A.data=100 #因为这里影响的是a里面的data
print(A.data)
A.run()
复制代码

output:

[5,2,3]
[5,2,3]
100
100

 

posted on   bubbleeee  阅读(122)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示