全局变量、局部变量、global关键字、nonlocal关键字

全局变量定义与特征
全局变量一旦设置在整个.py文件内都可以调用,顶头写,规范为变量名全部大写。

NAME = "Alex"
def test():
	print(NAME)


test()

局部变量定义与特征
局部变量只在某个子程序(函数)内可以被调用,函数结束后局部变量内存被释放,规范为小写。

locals()表示当前作用域所有的局部变量和当前作用域的函数(函数即变量)

NAME = "Alex"
def test():
	NAME = "YY"
	print(NAME)


test()
print(NAME)
def test(name):
    a = "Lucky"

    def test1():
        print("from test1")

    print(locals())


test('MB')
	

global语句
在某个函数的内部代码块写入 global变量名 的语句,表示此处引用全局变量中的该变量,此时在该函数内对该变量进行修改将会将该修改作用到全局的该变量。如果不用global结构则只可以对全局变量进行修改(如果该全局变量是可修改类型)。

globals()代表所有的全局变量

NAME = "Alex"
def test():
	global NAME
	NAME = "YY"
	print(NAME)


test()
print(NAME)
NAME = ["MB", "YY", "Alex"]
def test():
	NAME.append("Lucky")
	print(NAME)


test()
print(NAME)
name = "YY"


def test():
    print("from test")


print(globals())  # 此时会打印所有的全局变量,注意此处会打印test函数(函数即变量)

nonlocal语句
在某个子程序内使用 nonlocal变量名 的语句,表示此处表示此处引用上一级程序中的该变量,此时在该函数内对该变量进行修改将会将该修改作用到整个上一级的该变量。如果不用nonlocal结构则只可以对上一级变量进行修改(如果该上级变量是可修改类型)。

def test1():
    name = "YY"
    print(name)

    def test2():
        nonlocal name
        name = "Lucky"
        print(name)

    test2()
    print(name)


test1()
	
def test1():
    name = ["YY", "MB"]
    print(name)

    def test2():
        name.append("Lucky")
        print(name)

    test2()
    print(name)


test1()
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值