码迷,mamicode.com
首页 > 编程语言 > 详细

Python之变量的作用域

时间:2019-11-11 12:40:24      阅读:71      评论:0      收藏:0      [点我收藏+]

标签:作用   local   style   使用   name   没有   类变量   nbsp   lan   

变量的作用域:指变量被使用的范围,根据变量定义的范围,可分为全局变量和局部变量

  全局变量:一般定义在函数体外或类外

  局部变量:一般定义在函数体内,而在类中定义的变量,称之为类变量或者是实例变量

全局变量的访问、修改

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之变量的作用域

标签:作用   local   style   使用   name   没有   类变量   nbsp   lan   

原文地址:https://www.cnblogs.com/no-end-to-learning/p/11833885.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!