zoukankan      html  css  js  c++  java
  • 全局变量与局部变量

     全局变量变量名大写
    局部变量变量名小写
    优先读取局部变量,能读取全局变量,无法对全局变量重新赋值 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)
    输出
    刚娘
    冷静
    刚娘
     
  • 相关阅读:
    NPOI导出excel表格应用
    通过用户密码获取共享文件
    sql之left join、right join、inner join的区别
    C#日志编写
    C#预编译指令
    匿名类型(C# 编程指南)
    反射
    SQL通用查询
    Lambda 表达式(C# 编程指南)
    自定义用户控件编写——(文件夹目录选择)
  • 原文地址:https://www.cnblogs.com/liushuizs/p/10282962.html
Copyright © 2011-2022 走看看