zoukankan      html  css  js  c++  java
  • 函数命名空间,函数的名字

    #函数的嵌套调用和函数的嵌套定义
    #命名空间:三种:内置 全局 局部
    #作用域:两种:全局 局部
    #作用域链:名字的使用 是从小范围到大范围的就近事件
    #globals和locals方法
    #小范围可以使用大范围的,但不能修改
    #如果想要修改全局的:使用global关键字 —— 尽量避免
    #如果想要修改最近拥有该变量的外层函数的:使用nonlocal ——不影响全局
     
     
    namespace 命名空间,名称空间
    局部命名空间:每一个函数都拥有自己的命名空间
    全局命名空间:写在函数外面的变量名
    内置命名空间:python解释器启动之后就可以使用的名字

    python的解释器要运行起来
    加载顺序:
    先所有内置命名空间的中的名字-->然后按照顺序加载全局命名空间中的名字
    局部命名空间中的名字:在调用函数的时候产生,并且随着调用的结束而消失

    函数的嵌套定义
    def func():
        def qqxing():
            print('我是qqxing')
        qqxing()
    func()
    作用域:一个名字可以使用的区域
    全局作用域:内置名字空间和全局名字空间中的名字都属于全局作用域
    局部作用域:局部名字空间中的名字属于局部作用域
    局部作用域可以使用全局作用域中的变量
    而全局作用域不能使用局部作用域中的变量
    局部作用域中还可以嵌套更小的局部作用域
    作用域链:小范围作用域可以使用大范围的变量,但作用域链是单向的,不能反向应用
    n = 0
    def func1():
        n = 1
        def func2():
            n = 2
            def func3():
                n = 3
                print(n)
            func3()
        func2()
    
    func1()
    def func():
        a = 10
        b = 20
        print(locals())  #保存了当前作用域中变量
        print(globals())
    
    n = 10
    m = 22
    print(globals())   #保存了在全局作用域中的名字和值
    func()
    
    globals()   #保存了在全局作用域中的名字和值
    locals() #中的内容会根据执行的位置来决定作用域中的内容
    如果在全局执行
    globals和locals打印的结果是一致的
    第一类对象的概念:
    函数名可以赋值
    可以作为一个数据结构的元素
    可以作为一个函数的参数
    可以作为一个函数的返回值


  • 相关阅读:
    Hashmap实现原理
    策略模式
    Google Drive ubuntu
    numix Docky
    Google Drive 和 Dropbox 同步同一个文件夹目录
    sublime text 2
    matlab cell
    liteide
    taglist and nerdtree
    codeblocks
  • 原文地址:https://www.cnblogs.com/jassin-du/p/7773354.html
Copyright © 2011-2022 走看看