在接手一个Python项目的时候,通过Pycharm打开该项目,然后一片错误/警告之类的问题。为了能快速解决这些问题,我采取了一个比较笨的办法,就是重装了Python环境,并因此解决了基本所有的错误提示。但还是有一些警告,个人好像有些强迫症,不希望看到这些,然后开始着手解决。
第一个警告就是:从外部范围隐藏名称xx
因为之前没做过Python项目,其实对这个警告提示有些莫名其妙,通过Pycharm的提示,可以通过重命名某个方法(或者叫函数)的参数名称来消除这个警告。因此,猜想是不是函数参数的名称和类中的某个变量重名了?为了证实这个猜想,我把代码读了一遍,发现还真的是这样!!!那么,处理的方式就很简单了:要么修改函数参数变量的名称,要么修改类变量的名称。总之,只需要保证不重名就能解决该问题。
那么问题又来了,这种在函数(或者方法)的参数列表中定义了某个参数,其名称、类型都与类中的某个变量一致,这虽然有些奇怪,但在编译型语言(例如C#)中并不会引起编译器的警告。原因是它们其实是两个对象,而且作用域也不相同。那么,是什么原因让Pycharm认为这种方式在Python中是一个比较危险的行为的呢?!
在网上查了一下资料,大概定位为变量作用域的问题,好像会引发什么不可预知的问题,具体不清楚,待深入学习,下边将查询到的资料拷贝过来标记一下,免得下次想看的时候到处搜!
1、要消除这个黄色的警告,只需要一个知识点:变量隐藏 (variables shadow)
变量隐藏 就只有一句话:内部定义的变量会屏蔽父级定义的同名变量
2、原因:函数内部的变量,如果和函数被调用的外部的变量一样的话,就被PyCharm中叫做shadows name
这样的话,容易引发不容易觉察到的,由于函数内部和外部的变量名一致而引发的一些问题:
比如:内部函数名引用时不小心写错了时,就会导致其实调用了外部变量名,从而导致逻辑错乱。
所以解决办法是:
3、确保函数内部和外部的变量名不要重复,这样就不会导致可能由此导致的错误了
————————————————
版权声明:本文为CSDN博主「theone19」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/romon19/article/details/107857648
标签:变量,外部,xx,名称,Pycharm,警告,隐藏,函数 From: https://www.cnblogs.com/bushLing/p/16873426.html