zoukankan      html  css  js  c++  java
  • python基础7 ---python函数

    python基础知识

    一、闭包函数

      1、闭包函数的定义:在一个内部函数中,在对外部作用域(但不是在全局作用域)的变量进行引用,那么内部函数就被认为是闭包。

      2、闭包函数的特点:自带作用域和延迟计算

      补充:1.函数的作用域关系在函数定义阶段就已经固定,与调用位置无关。无论函数在何处调用,都需要回到定义阶段去找对应的作用域关系。

         2.globals:是把局部变量的值声明为全局变量的值。

          nonlocal:在一个内部函数中修改外部函数里的局部变量的值。

    二、装饰器

      1、装饰器遵循的是开放封闭原则:对扩展是开放的对修改是封闭的。

      2、装饰器的本质是:装饰器可以是任意可调用的对象,被装饰的对象也可以是任意可调用的对象。(装饰器本质就是函数,功能就是为其他函数添加新功能。)

      3、装饰器的功能:在不修改被装饰对象源代码以及调用方法的前提下为其添加新功能。

      4、装饰器的原则:不修改源代码,不更改源代码的调用方式。

      5、装饰器的目的:是为了添加新功能

      6、装饰器语法:在被装饰对象的正上方的前一行@装饰器名称。

      7、如果有多个装饰器,加载顺序是从下到上,执行顺序是从上到下。

     三、高阶函数

      1、高阶函数定义:函数接受的参数是个函数名,或者是函数的返回值是个函数名,满足其中一条就是高阶函数。

      2、高阶函数总结:

      当函数接收的参数是一个函数名                      当函数的返回值是一个函数名
       作用:在不修改函数源代码的前提下,为函数添加新功能,            作用:不修改函数的调用方式
       不足:会改变函数的调用方式                        不足:不能添加新功能
     四、补充:

       1、装饰器=高阶函数+函数嵌套+闭包                无参装饰器=高级函数+函数嵌套

       2、补充1:

        from urllib.request import urlopen
        print(urlopen('http://www.xiaohua100.cn/').read())
        print(urlopen(
    'https://www.python.org').read())

         from functools import wraps

  • 相关阅读:
    "无法在证书存储区中找到清单签名证书"的解决办法
    ASP.net从服务器端向客户端弹出alert对话框,但不使页面变成白板
    C#日期相关操作
    在Lucene.net实现自定义排序
    做技术二十多年 突然明白的道理
    .net中sql防止注入式攻击
    开发可统计单词个数的Android驱动程序(1)
    乐博Android客户端(新浪微博)1.01发布,欢迎各位童鞋试用
    百度面试题:求绝对值最小的数
    赶紧升级到Android 2.3.4,体验最新的Android技术
  • 原文地址:https://www.cnblogs.com/xuanan/p/7009167.html
Copyright © 2011-2022 走看看