发布于2020-03-20 11:06 阅读(637) 评论(0) 点赞(17) 收藏(5)
import module 引用共享变量时,要使用module.变量名。
而from module import * 直接使用变量名即可。
import module方式操作module的变量时,本地不会创建新变量,操作的是目标模块的变量。
from module import *方式操作module变量时,实质上是在本地创建一个与目标模块相同的变量名,并且默认与目标模块变量指向同一个内存空间。
看似功能一样,但是在开发中稍不注意可能会排bug排到头皮发麻!
用一个小示例说明:
先建立一个module.py,里面就一个公共变量,a = []。
然后我们用import module方式先操作module的变量,再打印,看下有没变化。
- import module
- module.a = [1,2,3]
- print(module.a)
-
- from module import a
- print(a)
-
- 输出:
- [1, 2, 3]
- [1, 2, 3]
看似很平常,正常操作,但是,继续看!
- from module import a
- a = [1,2,3]
- print(a)
-
- import module
- print(module.a)
-
- 输出:
- [1, 2, 3] # 结果不同了!
- []
怎么调一下位置,就输出不一样了?因为,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黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!