• 命名空间


    一、命名空间

          (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()  #全局
    闭包常用的形式
  • 相关阅读:
    __init__ 构造行数的用法
    Android SDK下载安装及配置教程
    每条用例执行10次
    Python Json模块中dumps、loads、dump、load函数介绍
    Python接口测试实战2
    linux 下添加环境变量 和刷新
    mysql 练习题笔记
    http请求脚本排错指南
    docker命令及其常用事项
    anaconda 环境
  • 原文地址:https://www.cnblogs.com/mengqingjian/p/7240568.html
Copyright © 2020-2023  润新知