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
风湿理论
name = '海风'
def huangwei():
name = '黄伟'
print(name)
def liuyang():
name = '刘洋'
print(name)
def nulige():
name = '陆志华'
print(name)
print(name)
nulige()
liuyang()
print(name)
print(name)
huangwei()
print(name)
输出结果:
海风
黄伟
刘洋
刘洋
陆志华
黄伟
函数中的内容先不执行,首先找到调用函数,输出结果。
首先打印当前作用域,如果当前作用域没有再向上一层找。

浙公网安备 33010602011771号