zoukankan      html  css  js  c++  java
  • python语言入门 第四天

    今日大纲:
    01名称空间,作用域,取值顺序
    02函数的嵌套
    03内置函数 globals() locals()
    04关键字global nonlocal
    05函数名的应用
    06闭包
    07装饰器初识
    08装饰器进阶


    注意:
    形参顺序:
    位置参数,*agrs,默认参数,**kwargs

    **kwargs的使用方法
    **kwargs 打包关键字参数成dict给函数体调用

    *args的使用方法
    *args 用来将参数打包成tuple给函数体调用


    1、名称空间,作用域,取值顺序

    - 名称空间:
    当程序运行时,代码从上至下依次执行,他会将变量名和值得对应关系存放在一个空间中,这个空间叫做名称空间,命名空间,全局名称空间.
    当程序遇到函数时,他会将函数名存放在内存中,函数体不管。
    当函数执行时,内存会临时开辟一个空间,存放函数体里面的代码(变量,代码等)
    函数外面访问不到临时空间的内容,随诊函数的执行完毕,临时名称空间会释放掉,临时开辟的空间叫做临时名称空间.也叫局部名称空间.

    - 分类;
    全局名称空间
    局部名称空间
    内置名称空间

    - 作用域:
    全局作用域:
    内置名称空间
    全局名称空间
    局部作用域:
    局部名称空间
    加载顺序:
    内置名称空间--->全局名称空间--->局部名称空间
    调用顺序(取值顺序):单向不可逆
    局部名称空间--->全局名称空间--->内置名称空间


    2、函数的嵌套:多个函数内部调用使用



    3、内置函数
    globals(): 返回一个字典,字典里面的内容是全局名称空间的内容
    locals(): 返回一个字典,当前位置的所有变量

    4、关键字:局部可以引用全局变量,但是不可以改变.

    - global:
    -- 用法:
    --- 引用并改变全局变量
    --- 在局部作用域声明一个全局变量


    - nonlocal:
    -- 用法:
    --- 不能操作全局变量
    --- 从哪层引用的该变量,从那层开始全部改变
    --- 用于多层函数调用,操作局部变量中的局部变量
    - 取值:
    -- 引用而不是改变
    -- 取值从小到大取值 LEGB
    -- 想改变上层空间的变量,要用global nonlocal

    - 对于可变的数据类型:list dict set 不用global nonlocal
    - 不可变的数据类型:字符串 整型
    - 如果默认参数是一个可变的数据类型,那么他在内存中永远是一个 (重点重点重点)


    5、函数名的应用:
    - 含义:
    -- 函数名可以作为容器类数据的元素
    -- 函数名可以作为函数的参数
    -- 函数名可以作为函数的返回值
    -- 像以上函数名,俗称第一类对象


    6、闭包:
    含义:内层函数对外层函数非全局变量的引用,叫做闭包
    判断:用函数名.__closure__ 使用
    用途:如果python解释器遇到闭包,有一个机制,这个闭包不会随着函数的结束而释放


    7、装饰器初识
    含义;本质是闭包
    根本作用;在不影响原函数执行的基础上,增加一些额外的功能登陆打印等

  • 相关阅读:
    Scanner和BufferedReader
    java annotation
    java获取短uuid
    定时任务线程
    sql 查询最近30分钟或者自定义时间数据
    查看base64编码图片
    oracle 的PACKAGE恢复过程
    Oracle BFILE备忘
    读取Spring的配置文件applicationContext.xml的5种方法
    解决eclipse ctrl+鼠标左键不能用
  • 原文地址:https://www.cnblogs.com/ipyanthony/p/9093993.html
Copyright © 2011-2022 走看看