函数知识点整理

函数
  • 一组语句通过一个名字(函数名)封装起来,想要执行的时候只需要调用其函数名即可
特性
  • 减少重复代码
  • 程序可扩展
  • 程序容易维护
参数
  • 形式参数

    • 函数被调用时分配内存,调用结束后释放
    • 形参只在函数内部有效
  • 实际参数

    • 常量、变量、表达式、函数等对象
  • 默认参数
  • 关键参数

    • 指定参数名传参数,关键参数放在位置参数之后
  • 非固定参数1

    • *args, 传入的参数就是一个元组
    • 如果参数中出现 *args, 传递的参数就可以不再是固定个数,传过来的所有参数打包元组
    • 如果传入的参数是一个列表或元组,那么就要在列表或元组前面加上*
    • 要放在传入参数的最后
  • 非固定参数2

    • **kwargs, 传入的参数就是一个字典
返回值
  • return
  • 可以返回任意对象,return代表函数的结束
局部变量
  • 定义在函数里的变量,只能在函数里生效
全局变量
  • 定义在函数外部一级代码的变量,全局能用
  • 如果全局和局部都有一个同名变量,函数的查找顺序是由内而外。
global
  • 在函数中定义全局变量
  • 需要先global声明全局变量,后定义变量值
  • 不建议函数中改全局变量
函数里不能直接修改的数据
  • 字符串
  • 数字
  • 布尔值
作用域 scope
  • python中函数就是一个作用域,局部变量定义在作用域中
  • 代码定义完成后,作用域已经生成(不是调用的时候才生成),作用域链向上查找
嵌套函数
  • 函数里层再定义函数
匿名函数
  • lamda

    • map(lambda x:x + 1, list(range(10)))
高阶函数
  • 接收一个或多个函数作为参数输入
  • return返回另外一个函数
递归
  • 函数的内部调用函数本身
  • 必须有明确的结束条件
  • 每次递归问题规模都应有所减少
  • 递归效率不高,递归层数太多会导致栈溢出
命名空间 namespace
  • 记录对象和对象名字对应关系的空间
  • LEGB访问规则

    • 往上寻找,由内而外
  • 局部命名空间 local

    • 函数的参数
    • 局部变量
    • 类的属性
  • 闭包命名空间 enclosing function

    • 闭包函数的命名空间(Python3引入)
  • 全局命名空间 global

    • 读取一个模块(.py)后产生的命名空间
  • 内建命名空间 build-in

    • Python解释器启动时自动载入__built__模块形成的名称空间
    • 各种内置函数str/list/open
闭包
  • 闭包是一种代码组织结构
  • 内部函数可以使用外部函数变量的行为,就叫闭包

    • 闭包是由函数及其相关的引用环境组合而成的实体
    • 而在函数式语言中,当内嵌函数体内引用到体外的变量时,将会把定义时涉及到的引用环境和函数体打包成一个整体(闭包)返回
def foo():
    m = 3
    n = 5
    def bar():
        a = 4
        return m + n + a
    return bar
>>>bar = foo()
>>>bar()
装饰器
  • 语法糖
  • 本质是一个返回函数的高阶函数
  • 想对一个函数扩展功能,又不希望修改原函数代码的情况下就需要装饰器

转载于:https://www.cnblogs.com/chacecai/p/8950919.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值