全局变量与局部变量

 全局变量变量名大写
局部变量变量名小写
优先读取局部变量,能读取全局变量,无法对全局变量重新赋值 NAME=“fff”,
但是对于可变类型,可以对内部元素进行操作
如果函数中有global关键字,变量本质上就是全局的那个变量,可读取可赋值 NAME=“fff”
golbal 关键字
要注意函数定义与引用的前后关系
name='lhf'
def change_name():
    global name
    name='帅了一比'
    print('change_name',name)
change_name()
print(name)

输出

change_name 帅了一比
帅了一比
NAME = "杠娘"
def yangjian():
    #NAME = "史正文"  #报错
    global NAME
    NAME = "小东北"
    print('我要搞', NAME)

def qupengfei():
    NAME = ""
    print('我要搞', NAME)

yangjian()
qupengfei()

输出

我要搞 小东北
我要搞 基
# 如果函数的内容无global关键字,
#   - 有声明局部变量
NAME = ["产品经理","廖波湿"]
def qupengfei():
    NAME = "自己"
    print('我要搞', NAME)
qupengfei()

输出

我要搞 自己
NAME = ["产品经理","廖波湿"]
def qupengfei():
    NAME.append('XXOO')
    print('我要搞', NAME)
qupengfei()

输出

我要搞 ['产品经理', '廖波湿', 'XXOO']
# 错误示例
NAME = ["产品经理","廖波湿"]
def qupengfei():
    NAME = "自己"
    global NAME
    print('我要搞', NAME)
qupengfei()

输出

SyntaxError: name 'NAME' is assigned to before global declaration
NAME = ["产品经理","廖波湿"]
def qupengfei():
    global NAME
    NAME = ["阿毛"]
    NAME.append('XXOO')
    print('我要搞', NAME)
qupengfei()

输出

我要搞 ['阿毛', 'XXOO']
NAME = ["产品经理","廖波湿"]

def yangjian():
    #NAME = "史正文"
    global NAME # 已经声明,NAME就是全局的的那个变量
    print('我要搞', NAME)
    NAME = "小东北"  # 修改 全局的变量
    print('我要搞', NAME)
yangjian()

输出

我要搞 ['产品经理', '廖波湿']
我要搞 小东北
NAME = ["产品经理","廖波湿"]
def qupengfei():
    name = "自己"
    global NAME
    print('我要搞', NAME)
qupengfei()

输出

我要搞 ['产品经理', '廖波湿']
#要搞清楚定义  与执行的关系
NAME = '海风' def huangwei(): #1 name = "黄伟" #3 print(name) #4 def liuyang(): #6 name = "刘洋" #7 print(name) def nulige(): name = '沪指花' print(name) print(name) nulige() liuyang() #5 print(name) huangwei() #2

输出

黄伟
刘洋
刘洋
沪指花
黄伟

name = "刚娘"
def weihou():
    name = "陈卓"
    def weiweihou():
        nonlocal name   # nonlocal,指定上一级变量,如果没有就继续往上直到找到为止
        name = "冷静"

    weiweihou()
    print(name)

print(name)
weihou()
print(name)
输出
刚娘
冷静
刚娘
 
原文地址:https://www.cnblogs.com/liushuizs/p/10282962.html