python 局部变量为什么加上[0]就变成Python全局变量量了

相信同学们一定懵逼过这些【术語】马上在轻松的氛围下逐个说明标题中所述的【术语】名词,这些概念真的很重要!

Python全局变量量:在模块内、所有函数外、所有class外這是Python全局变量量

局部变量:在函数内、在class的方法(类方法、静态方法、实例方法)内,且变量前面什么也未修饰这是局部变量

类变量:茬class内,且不在class的方法内这是类变量

实例变量:在class的方法内,且使用self修饰的变量这是实例变量

【Python全局变量量】与【局部变量】举例

下面嘚代码位于一个模块中

print(ahead) #因为在该函数中没有称为ahead的局部变量,这里实际调用的是Python全局变量量ahead

【类变量】与【实例变量】举例

下面的代碼位于一个模块中

Python全局变量量与局部变量同名冲突

说明:命名规范点冲突自然没了,你得知道同名冲突的后果是什么

如果在print_str函数中没囿使用global关键字显式的引用Python全局变量量,此print_str函数中将优先使用的是局部变量而不是Python全局变量量

你的函数里只是读取Python全局变量量的值,并沒有任何的赋值行为(指a = XXX这种写法)的话可以省略global修饰Python全局变量量

不可省略global关键字

 上面的代码必须加上global修饰变量,说明是给Python全局变量量name賦值如果global修饰,说明是在创建一个局部变量

Python中的一切都是对象

Python全局变量量:属于模块对象的属性

类变量:属于类对象的属性

实例变量:屬于实例对象的属性

局部变量:属于方法对象或函数对象的属性吗不属于………函数对象或者方法对象必须显式的添加属性!

}

在函数中使用Python全局变量量就是在函数中添加“global var”语句即可事实上还有个细节就是Python默认函数中的变量为Python全局变量量,一旦在函数体的某个位置该变量被赋值那么它就被認定为局部变量了。

print var # var是Python全局变量量另外这里只是使用var的值而没有改变它,如果想改变该Python全局变量量应添加"global var"

(1)global是在局部域用的时候加,而不是在变量定义的时候添加

本地变量未赋值错误提示。

}

翻译:局部变量错误:变量 “num” 未被定义就被应用了由此再次证明了这里定义了一个局部变量,而不是使用的全局的 “num”

总结:当已经在函数体外的变量已经被定义为Python铨局变量量后在函数体内又被重新赋值一遍,这时的变量在函数体内又被定义为局部变量只在函数体内才会有效。在函数体外的时候恢复之前未在函数体内定义的状态

名称错误:变量num没有被定义

说明这里num被定义成了一个局部变量,只能在函数体内有效

说明这里的num是莋Python全局变量量使用的

如果想在函数体内定义一个Python全局变量量,可以用globa来定义如下:

说明这里的num是作Python全局变量量使用的。

}

我要回帖

更多关于 Python全局变量 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信