zoukankan      html  css  js  c++  java
  • python项目_全局变量和函数嵌套

    1.全局变量和局部变量

    # 1.定义全局变量
    c1 = 91    #顶格写的就是全局变量
    
    # (1) 局部变量
    def func():
        # 定义局部变量
        a = 5   ##有缩进的就是局部变量
    
    局部变量和全局变量因为所在空间不一样,所以不会有影响
    
    范例:
     
    c = 6
    
    def func():
        c = 7
    func()

    2.函数内修改全局变量,函数外修改修改局部变量

    # 2.在函数内部可以修改全局变量 使用global 关键字 
    '''先用global 把这个变量声明一下,在进行修改,一般放在函数的开头位置'''
    def func():
        global c1
        print(c1)
        c1 = 93
        
    func()
    """
    # global 总结:
    如果函数外部有这个全局变量,在函数内部使用global关键字,可以修改全局变量
    如果函数外部没有这个全局变量,在函数内部使用global关键字,可以定义一个全局变量;
    """
    
    def outer():
        a = 10
        def inner():
            nonlocal a
            a = 11
            print(a,1)
        inner()
        print(a,2)
    outer()
    
    #(3) nonlocal 只能修饰局部变量,当所有层级找不到的时,直接报错;

    3.LEGB原则(即就近原则找变量)

        #找寻变量的调用顺序采用LEGB原则(即就近原则)
        B —— Builtin(Python);Python内置模块的命名空间      (内建作用域)
        G —— Global(module); 函数外部所在的命名空间        (全局作用域)
        E —— Enclosing function locals;外部嵌套函数的作用域(嵌套作用域)
        L —— Local(function);当前函数内的作用域            (局部作用域)
        依据就近原则,从下往上 从里向外 依次寻找
  • 相关阅读:
    ASP.NET 身份验证机制
    ASP.NET 一般处理程序下载
    [c、c++]宏中"#"和"##"的用法(zz)
    XML 链接语言(XLink) 版本 1.0
    网上看到的对个人发展很不错的话
    【分享】WebForm中DataGrid的20篇经典文章
    Ajax
    ISO/OSI网络体系结构
    经典推荐.Net面试法宝(面试题收集)
    Union的问题
  • 原文地址:https://www.cnblogs.com/jalen-123/p/13173698.html
Copyright © 2011-2022 走看看