1、要消除这个黄色的警告,只需要一个知识点:
变量隐藏
(variables shadow)
变量隐藏
就只有一句话:内部定义的变量会屏蔽
父级定义的同名变量
2、原因:函数内部的变量,如果和函数被调用的外部的变量一样的话,就被PyCharm中叫做shadows name
这样的话,容易引发不容易觉察到的,由于函数内部和外部的变量名一致而引发的一些问题:
比如:内部函数名引用时不小心写错了时,就会导致其实调用了外部变量名,从而导致逻辑错乱。
所以解决办法是:
3、确保函数内部和外部的变量名不要重复,这样就不会导致可能由此导致的错误了
原因:函数内部的变量,如果和函数被调用的外部的变量一样的话,就被PyCharm中叫做shadows name这样的话,容易引发不容易觉察到的,由于函数内部和外部的变量名一致而引发的一些问题:比如:内部函数名引用时不小心写错了时,就会导致其实调用了外部变量名,从而导致逻辑错乱。所以解决办法是:确保函数内部和外部的变量名不要重复,这样就不会导致可能由此导致的错误了...
最近在学习Python,使用
pycharm
时,发现导入自己写的功能模块时
pycharm
不能智能
提示
,感觉很苦恼,原来是
pycharm
不会将当前的工作目录加入到自己的sourse_root中解决办法有两种,本文只具体介绍最简单的一种,
解决办法如下
/1、在
Pycharm
界面中右击你想要导入模块的py文件夹,选择Make Diretory as
/2、然后选择Sourse Root
3、这样你导入的模块就有智能
提示
了!!!
File–>setting–>project:你的工程名–>project structure–>选中上方的Sourse–>点击ADD content root
在
Pycharm
中写代码,经常会发现代码下出现波浪线。这是因为
Pycharm
根据pep8风格进行了代码检查。当违背pep8代码风格时,代码下方就会出现波浪线。
强迫症害死人。为了消除所有警告,保持代码颜值,笔者正在对自己代码风格中不规范的地方进行一一纠正。
“
shadow
s name 'xxxx' from out
er
scope
”是一类常见的警告,当变量所在函数被调用的地方已存在同名变量时会提醒。
举个例子:
这里报“
shadow
s name 'word' from out
er
scope
”让
shadow
s name ‘xxxx’ from out
er
scope
警告解决在
PyCharm
中
提示
shadow
s name ‘xxxx’ from out
er
scope
,当你在外部有个相同名称的变量在方法内部被重新指定了新的值,也就是说你在外部的相同名称的变量压根就没有任何作用。所以
PyCharm
就回
提示
这个信息。这个时候就需要我们去调整具体代码了。python的变量作用域:
模块对应gl
在
PyCharm
中
提示
:
shadow
s name ‘xxxx’ from out
er
scope
,当在外部有个相同名称的变量在方法内部被重新指定了新的值,也就是说你在外部的相同名称的变量压根就没有任何作用。所以
PyCharm
就会
提示
这个信息。
python的变量作用域:
模块对应global,最内层为local,外层为nonlocal。
变量查找顺序:内层作用域->外层->全局->builtin
只有class、def和lamda会改变作用域
读取变量的时候,如果local没有,查找non
在
PyCharm
编写代码时
提示
shadow
s name ‘xxxx’ from out
er
scope
(直译为:从外部作用域隐藏名称“xxx”)
函数内部的变量’xxx’,在外部也有相同名称的变量’xxx’。
消除警告方法
修改变量名称,让内外部参数名称不同
如果内外部一样,在函数内部想要修改外部参数时,在函
这个警告通常是由于在函数内部使用了全局变量而引起的。在函数内部,如果您使用了与全局变量相同名称的变量,
PyCharm
会认为您正在创建一个新的本地变量,并使用本地变量而不是全局变量。因此,它会发出一个警告,告诉您您正在使用来自外部作用域的变量。
要解决这个问题,您可以使用global关键字声明函数内部使用的全局变量。这会告诉Python解释器使用全局变量而不是本地变量。
model = None
def my_function():
global model
# 使用全局变量model
model = "something"
在这个例子中,我们使用global关键字声明了函数内部使用的全局变量model。这样,Python解释器就知道我们想要使用外部作用域中的变量,而不是创建一个新的本地变量。