xsmile
You can fly higher
xsmile's Blog
Python变量

最近因为手头工作需要,重新拾起十年前玩的Python写了一个小程序,但因为之前接触Java的时间太长,用写Java的思维写Python,就遇到了这样或那样的问题,现在程序写完,小记其中一个印象深刻的问题。虽然这其实是Python中最最基础的一个常识…

Python变量

不同组的相同名称的变量视为两个独立的变量,因此隶属于不同分组(即命名空间)的变量名可以重复。所以python的局部变量名称可以和全局变量名称重复

变量名解析LEGB原则

L是local,指局部变量,作用于函数内部。

E是Enclosing function locals,作用于Python嵌套函数内。

G是Global,是全局变量,定义在函数体外,在整个文件中都可以访问。

B是Buildin,Python内置模块的名字空间函数名称等,比如dict、len()等。

LEGB就是用来规定命名空间查找顺序的规则。

LEGB规定了查找的顺序为:

Local>Enclosing function locals>Global>Builtin
这个需要特别注意!

global访问修改全局变量

如果要在函数内修改全局变量,则必须在函数内部,修改全局变量前,显式的使用global声明该变量,才可以修改。 但需要注意的是,对于全局数组、字典类变量则不需要global声明,直接就可以在函数内部修改。

关于全局变量的总结和建议

总结:不建议在函数内直接修改全局变量,容易造成混乱。正常情况下应在函数内访问全局变量,而不是修改 。

建议:如果你想要通过一个函数来修改一个全局变量,建议把它作为一个变量传入,然后重新指定返回值。

没有标签
首页      技术      Python      Python变量

发表回复

textsms
account_circle
email

xsmile's Blog

Python变量
最近因为手头工作需要,重新拾起十年前玩的Python写了一个小程序,但因为之前接触Java的时间太长,用写Java的思维写Python,就遇到了这样或那样的问题,现在程序写完,小记其中一个印象深…
扫描二维码继续阅读
2019-01-29