zoukankan      html  css  js  c++  java
  • 命名空间

    一、命名空间

          (1) 命名空间分为三种:1、全局命名空间

                                            2、局部命名空间

                                            3、 内置命名空间

          (2) 三种命名空间的加载和取值顺序:内置命名空间>全局命名空间>局部命名空间

         (3)取值:

                    在局部调用:局部命名空间->全局命名空间->内置命名空间

    x = 1
    def f(x):
        print(x)
    
    print(10)
    View Code

                      在全局调用:全局命名空间->内置命名空间

    x = 1
    def f(x):
        print(x)
    
    f(10)
    print(x)
    View Code

    二、作用域

            

    作用域就是作用范围,按照生效范围可以分为全局作用域和局部作用域。

    全局作用域:包含内置名称空间、全局名称空间,在整个文件的任意位置都能被引用、全局有效

    局部作用域:局部名称空间,只能在局部范围生效

    作用域:
    小范围的可以用大范围的
    但是大范围的不能用小范围的
    范围从大到小(图)
    在小范围内,如果要用一个变量,是当前这个小范围有的,就用自己的
    如果在小范围内没有,就用上一级的,上一级没有就用上上一级的,以此类推。
    如果都没有,报错

    三、函数嵌套
    函数嵌套的调用
    def max2(x,y):
        m  = x if x>y else y
        return m
    View Code

             函数嵌套定义

    def f1():
        print("in f1")
        def f2():
            print("in f2")
    
        f2()
    f1()
    View Code

    四、函数的作用域链

    def f1():
        a = 1
        def f2():
            print(a)
        f2()
    
    f1()
    View Code
    def f1():
        a = 1
        def f2():
            def f3():
                print(a)
            f3()
        f2()
    
    f1()
    函数作用域链2
    def f1():
        a = 1
        def f2():
            a = 2
        f2()
        print('a in f1 : ',a)
    
    f1()
    作用域链3

    五、闭包

        1、 闭包分为:1、闭:内部函数

                         2、包:包含对外部函数的作用域中变量的引用

        2、闭包常用的形式:

    def hei():
        x = 20
        def inner():
            print(x)  #局部的
        return inner
    
    i = hei()
    i()  #全局
    闭包常用的形式
  • 相关阅读:
    WCF的一些基本知识点
    WCF服务编程基础
    Spring IoC 原理猜想(转载)
    利用httponly提升应用程序安全性(转载)
    Ajax:CustomValidator对输入的文本框进行验证
    WCF学习系列
    WCF 契约
    JavaScript:search() 方法
    HDU 1596 find the safest road
    HDU 2063 过山车
  • 原文地址:https://www.cnblogs.com/mengqingjian/p/7240568.html
Copyright © 2011-2022 走看看