博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python函数-高级(闭包/装饰器)
阅读量:5092 次
发布时间:2019-06-13

本文共 1060 字,大约阅读时间需要 3 分钟。

day10

一、函数的嵌套

  函数嵌套:函数内嵌套函数的形式

def f1():    def f2():        def f3():            print('from f3')        f3()    f2()​f1()

二、名称空间和作用域

  1、名称空间含义

    用于存放名字和值的绑定关系的地方。

  2、名称空间的分类

    a、内置名称空间:

      作用:存放python解释器自带的名字

      生命周期:在解释器启动时生效,解释器关闭时失效。

    b、全局名称空间:

      作用:除了内置和局部的名字外,其余都是全局名字。

      生命周期:在文件执行时生效,文件执行完毕时失效。

    c、局部名称空间:

      作用:用于存放函数调用期间函数产生的名字,

      生命周期:在文件执行过程中如果调用了某个函数才会临时生效,在函数执行完毕后失效。

    注:加载顺序:内置名称空间--》全局名称空间--》局部名称空间

    查找顺序:局部名称空间--》全局名称空间--》内置名称空间

  3、作用域

    域指的是区域、范围,作用域即作用的范围

    全局作用域(全局作用范围) 对应内置域全局名称空间

    特点:全局有效 全局存活

    局部作用域(局部作用范围) 对应局部名称空间

    特点:局部有效 临时存活

    注:作用域关系是函数定义阶段就固定死了,域函数的调用位置无关。

    在局部作用域内需要修改全局变量,需先声明。

    语句:global x

    nonlocal 一直往外层找,但是不能出函数,没找到就会报错。


 

三、闭包函数:

  注:在任意位置调用函数都需要跑到定义函数时的地方去寻找作用域关系。

  1、什么是闭包函数:

    闭:函数是一个内部函数;

    包:该函数包含对外部作用域(非全局作用域)名字的引用。

  2、为函数传参的两种方式:

    a、使用参数的形式;

    b、包给函数(即闭包函数的实际应用)。


 

四、装饰器

  1、什么是装饰器:

    装饰器指的是为被装饰对象添加功能的一种工具。

  2、为什么要用装饰器:

    软件的维护应该遵循开放封闭原则(软件一旦上线运行后对修改源代码是封闭的,对扩展的功能是开放的)这样就用到了装饰器。

 

转载于:https://www.cnblogs.com/peng-zhao/p/10034432.html

你可能感兴趣的文章
C9---include,编译
查看>>
Maven简介(六)——Dependency
查看>>
android106 C基本数据类型
查看>>
oc-25-id类型
查看>>
STL 案例分析
查看>>
[ActionScript 3.0] AS3 双A字模型
查看>>
后台管理项目简单小总结------彭记(021)
查看>>
死磕JDK源码之Thread
查看>>
jekyll 安装 ...
查看>>
微信页面关于点击按钮关注公众号放到链接里无关注按钮
查看>>
python 字典处理的一些坑
查看>>
构建oracle12c的Docker镜像
查看>>
用户权限命令(chmod,chown,umask,lsattr/chattr)
查看>>
Maven详解
查看>>
Linux系统中‘dmesg’命令处理故障和收集系统信息的7种用法
查看>>
数据结构 : Hash Table [II]
查看>>
面向对象的小demo
查看>>
获取地址栏参数
查看>>
java之hibernate之helloworld
查看>>
微服务之初了解(一)
查看>>