ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Python3不要直接修改其他文件的变量

2022-07-19 16:03:51  阅读:135  来源: 互联网

标签:文件 变量 修改 导入 模块 test Python3


1.背景

  在复习python3的课程中,学到购物车和ATM分为2个系统来写,所以少不了各模块间的导入,由于如商品列表等使用变量表示,导致很多文件都会import并修改值,原本以为变量在a文件里面,b和c导入之后并对a文件的变量做了修改,那么其他文件的调用的变量是修改后的,后面测试则不然。

  尽管我们能够在某些情况下直接修改另一个文件中的变量,但是往往我们都不这样做。为什么呢?

  以上所有疑问,下面用一个例子来解释。

 

2.原因

  假设这里有3个文件,a,b,c,变量test在a里面,b,c文件都会有导入test变量并使其更改值。见下图。

  

  

  

  

  以上代码可以总结出:(虽然不管函数里面是本地变量还是全局变量。)每个文件即使导入了变量并修改了变量,其它文件在导入变量的时候还是最初源文件导入的原始内存地址和值。

  当然也最好建议不要这么做,这样的的问题就在于,这样的做法过于含糊了:无论是谁负责维护或重用第一个模块,都不一定知道有一个不知道在哪的模块位于导入链上可以修改X。实际上,第二个模块可能在完全不同的一个目录下,而且很难找到。

  再者,这会让两个文件有过于强的相关性:因为它们都与变量test的值相关,如果没有其中一个文件的话很难理解或重用另一个文件。这种隐含的跨文件依赖性,在最好的情况下会导致代码不灵活,最坏的情况下会引发bug。

  这里再说一次,最好的解决办法就是别这样做:在文件间进行通信最好的办法就是通过调用函数,传递参数,然后得到其返回值。

 

 

标签:文件,变量,修改,导入,模块,test,Python3
来源: https://www.cnblogs.com/lizexiong/p/16494388.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有