D15-02 全局变量与局部变量part1、2、3

name = 'lpt'
def test():
    name = 'liu'
    print('test',name)
test()
print(name)
输出结果
test liu
lpt

 如果想修改全局变量name 在函数任意位置声明如下:

name = 'lpt'
def test():
    global name
    name = 'liu'
    print('test',name)
test()
print(name)
输出结果
test liu
liu

如果函数内部无global关键字,优先读取局部变量,再读取全局变量,无法对全局重新赋值。

对于可变类型,(元组,数字,字符串不可修改)可以对内部元素进行操作 例如name.append('ddd')

如果函数中有global关键字,本质上就是全局的变量,可读取,可赋值。

注意:要在name之前声明全局变量 否则容易报错 

name = '产品经理'
def yang():
    global name
    print('====>',name)
    name = 'ddddd'
    print('------->',name)

yang()
输出结果为
====> 产品经理
-------> ddddd
name = 'gangniang'
def weihou():
    name = 'chenzhuo'
    def weiweihou():
        global name
        name = 'lengjing'
    weiweihou()
    print(name)
print(name)
weihou()
print(name)
输出结果

gangniang
chenzhuo
lengjing

 notlocal 指定上一级变量

name = 'gangniang'
def weihou():
    name = 'chenzhuo'
    def weiweihou():
        nonlocal name
        name = 'lengjing'
    weiweihou()
    print(name)
print(name)
weihou()
print(name)
输出结果
gangniang
lengjing
gangniang

  

猜你喜欢

转载自www.cnblogs.com/liupingtao/p/9336495.html
今日推荐