函数系列2

1. 函数的返回值
  • 返回值就是函数执⾏以后,返回的结果
  • 通过return来指定函数的返回值
  • return后⾯可以跟任意对象,返回值甚至可以是⼀个函数
  • 通过变量来接收函数返回的结果
2. 文档字符串
  • help()是Python中内置函数,通过help()函数可以查询Python中函数的⽤法
  • 在定义函数时,可以在函数内部编写⽂档字符串,⽂档字符串就是对函数的说明
  • 语法: help(函数对象)
3. 函数的作用域
  • 作⽤域(scope)
  • 作⽤域指的是变量⽣效的区域
  • 在Python中⼀共有两种作⽤域
  1. 全局作⽤域
  • 全局作⽤域在程序执⾏时创建,在程序执⾏结束时销毁
  • 所有函数以外的区域都是全局作⽤域
  • 在全局作⽤域中定义的变量,都是全局变量,全局变量可以在程序的任意位置进⾏访问
  1. 函数作⽤域
  • 函数作⽤域在函数调⽤时创建,在调⽤结束时销毁
  • 函数每调⽤⼀次就会产⽣⼀个新的函数作⽤域
  • 在函数作⽤域中定义的变量,都是局部变量,它只能在函数内部被访问
  • 如果希望在函数内部修改局部变量,需要使用global关键字,来声明变量,此时修改的变量,就是在修改全局变量
4. 命名空间
  • 命名空间实际上就是⼀个字典,是⼀个专⻔⽤来存储变量的
  • 字典locals()函数 ⽤来获取当前作⽤域的命名空间
  • 如果在全局作⽤域中调用 locals() 则获取 全局命名空间
  • 如果在函数作⽤域中调⽤ locals() 则获取 函数命名空间
  • 返回值是⼀个字典
  • globals() 这个函数可以在任意位置获取全局的命名空间
  • 向scope中添加一个key-value(就相当于在全局中创建一个变量)
  • scope = locals()
5. 递归函数
  • 递归是解决问题的⼀种⽅式,它的整体思想,是将⼀个⼤问题分解为⼀个个的⼩问题,直到问题⽆法分解时,再去解决问题
  • 递归函数就是在函数中调用自己
  • 递归函数有2个条件:
  1. 基线条件:问题可以被分解为最⼩问题,当满⾜基线条件时,递归就不执⾏了
  2. 递归条件:可以将问题继续分解的条件
6. 高阶函数
  • 接收函数作为参数。或者将函数作为返回值返回的函数就是⾼阶函数
  • 当使用一个函数作为参数时,实际上就是将一段代码,传递到了目标函数
7. 匿名函数

匿名函数: lambda 函数表达式

  • lambda 函数表达式,专门用来创建一些简单的函数,它是函数的另一种创建方式
  • 语法:lambda 参数列表:返回值
8. 闭包
  • 高阶函数的另一种形式,将函数作为返回值返回,这种形式也称为闭包
  • 闭包的好处:
    通过闭包可以创建⼀些只有当前函数能访问的变量
    可以将⼀些私有数据藏到闭包中
  • 形成闭包的条件:
    函数嵌套
    将内部函数作为返回值返回
    内部函数必须要使⽤到外部函数的变量
9. 装饰器的引入
  • 我们可以直接通过修改函数中的代码来完成需求,但是会产⽣以下⼀些问题:
    如果修改的函数多,修改起来会⽐较麻烦
    不⽅便后期的维护
    这样做会违反开闭原则(ocp)
  • 程序的设计:要求开发对程序的扩展,要关闭对程序的修改
10. 装饰器的使用
  • 通过装饰器,可以在不修改原函数的情况下,来对函数进⾏扩展
  • 在开发中,我们都是通过装饰器来扩展函数的功能的
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页