Python之变量的作用域
Posted no-end-to-learning
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python之变量的作用域相关的知识,希望对你有一定的参考价值。
变量的作用域:指变量被使用的范围,根据变量定义的范围,可分为全局变量和局部变量
全局变量:一般定义在函数体外或类外
局部变量:一般定义在函数体内,而在类中定义的变量,称之为类变量或者是实例变量
全局变量的访问、修改
name = "C" #全局变量 print("我的名字是:{0}".format(name)) def ShowLanguageInfo(): age = 28 #局部变量 name = "Python" #想要修改全局变量的值,却失败了 print("我的名字是:{0},今年{1}岁了".format(name, age)) ShowLanguageInfo() print("我的名字是:{0}".format(name)) >>> 我的名字是:C 我的名字是:Python,今年28岁了 我的名字是:C
使用global来声明变量为全局变量
name = "C" #全局变量 print("我的名字是:{0}".format(name)) def ShowLanguageInfo(): age = 28 #局部变量 #name = "Python" #想要修改全局变量的值,却失败了 global name #声明name为全局变量,使用global说明 name = "Python" print("我的名字是:{0},今年{1}岁了".format(name, age)) ShowLanguageInfo() print("我的名字是:{0}".format(name)) >>> 我的名字是:C 我的名字是:Python,今年28岁了 我的名字是:Python
在嵌套使用情景时,如何来修改局部变量呢
name = "C" #全局变量 print("我的名字是:{0}".format(name)) def ShowLanguageInfo(): age = 28 #局部变量 #name = "Python" #想要修改全局变量的值,却失败了 global name #声明name为全局变量,使用global说明 name = "Python" print("我的名字是:{0},今年{1}岁了".format(name, age)) def SetAge(): age = 18 #想要修改局部变量 修改年龄,设置为永远18岁 print("我的名字是:{0},今年{1}岁了".format(name, age)) SetAge() #打印验证 print("我的名字是:{0},今年{1}岁了".format(name, age)) #再次验证是否真正修改年龄成功,发现并没有 ShowLanguageInfo() print("我的名字是:{0}".format(name)) >>> 我的名字是:C 我的名字是:Python,今年28岁了 我的名字是:Python,今年18岁了 我的名字是:Python,今年28岁了 我的名字是:Python
使用nonlocal来说明该变量为外部局部变量,而非全局变量
name = "C" #全局变量 print("我的名字是:{0}".format(name)) def ShowLanguageInfo(): age = 28 #局部变量 #name = "Python" #想要修改全局变量的值,却失败了 global name #声明name为全局变量,使用global说明 name = "Python" print("我的名字是:{0},今年{1}岁了".format(name, age)) def SetAge(): #age = 18 #想要修改局部变量 修改年龄,设置为永远18岁 nonlocal age #声明age为外部局部变量,而非全局变量,使用nonlocal说明 age = 18 print("我的名字是:{0},今年{1}岁了".format(name, age)) SetAge() #打印验证 print("我的名字是:{0},今年{1}岁了".format(name, age)) #再次验证是否真正修改年龄成功,发现成功 ShowLanguageInfo() print("我的名字是:{0}".format(name)) >>> 我的名字是:C 我的名字是:Python,今年28岁了 我的名字是:Python,今年18岁了 我的名字是:Python,今年18岁了 我的名字是:Python
以上是关于Python之变量的作用域的主要内容,如果未能解决你的问题,请参考以下文章