程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

2024-11(2)

Python import module与from module import * 两种模块的区别

发布于2020-03-20 11:06     阅读(637)     评论(0)     点赞(17)     收藏(5)


区别1

import module 引用共享变量时,要使用module.变量名。

而from module import * 直接使用变量名即可。

区别2

import module方式操作module的变量时,本地不会创建新变量,操作的是目标模块的变量。

from module import *方式操作module变量时,实质上是在本地创建一个与目标模块相同的变量名,并且默认与目标模块变量指向同一个内存空间。

看似功能一样,但是在开发中稍不注意可能会排bug排到头皮发麻!

用一个小示例说明:

先建立一个module.py,里面就一个公共变量,a = []。

然后我们用import module方式先操作module的变量,再打印,看下有没变化。

  1. import module
  2. module.a = [1,2,3]
  3. print(module.a)
  4. from module import a
  5. print(a)
  6. 输出:
  7. [1, 2, 3]
  8. [1, 2, 3]

看似很平常,正常操作,但是,继续看!

  1. from module import a
  2. a = [1,2,3]
  3. print(a)
  4. import module
  5. print(module.a)
  6. 输出:
  7. [1, 2, 3] # 结果不同了!
  8. []

怎么调一下位置,就输出不一样了?因为,from module import 方式是自己创建了一个自己的变量a指向module.a的内存空间,当执行命令a = [1,2,3]时,变量a赋值了,重新分配了内存空间,并不是module文件里的a变量重新分配空间,所以module文件里的a变量的值没有变化。而import module方式是操作module文件里面a的变量,即使进行了赋值,重新分配了内存空间,但是他还是module里面的变量。所以当别人导入module的时候,module.a的值就是[1,2,3]了。

PS:建议,开发中,如果有操作公共变量的情况,一定要全部都用import module方式。



所属网站分类: 技术文章 > 博客

作者:战天

链接:https://www.pythonheidong.com/blog/article/270904/7cc6284e391e6ff5e657/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

17 0
收藏该文
已收藏

评论内容:(最多支持255个字符)