python函数
2021-07-16 13:04
标签:匹配 过程 生成器 求值 可变参数 简化 递归函数 要求 不能 形参:定义中的参数列表成为形式参数,只是一种符号表达 实参:调用时写的参数是实际参数,是实实在在传入的值 可变位置参数:在参数前加一个星号* 可变关键字参数:在参数前加两个星号** 混合使用参数时,普通参数在前 可变参数在后,可变位置参数在可变关键字参数前面 参数解构 非字典类型使用*解构成位置参数 字典类型使用**解构成关键字参数 提取的元素数目要和参数的要求匹配,也要和参数的类型匹配 作用域 全局作用域:整个程序运行环境中都可见 局部作用域:做函数,类等内部可见 闭包 自由变量:在嵌套函数中,定义在外层函数作用域的局部变量 nonlocal 将变量标记为不在本地作用域定义,而在上层的局部作用域中定义,但不能在全局作用域定义 变量名解析原则LEGB local,本地作用域。函数调用时创建调用结束消亡 Enclosing,嵌套函数的外层函数的命名空间 Global,全局作用域。解释器退出时消亡 Build-in,内置模块的命名空间。生命周期从解释器启动到解释器退出 递归函数 函数直接或间接调用本身就是递归 递归需要有边界条件,递归前进段,递归返回段 递归一定要有边界条件。当边界条件不满足时递归前进,当边界条件满足时,递归返回 递归函数实现斐波那契数列: 匿名函数 匿名函数,即没有名字的函数 使用lambda关键字定义匿名函数 格式:lambda 参数列表:表达式;例:(lambda x:x**2)(4) labda表达式只能写在一行上,称为单行函数 用途: 在高阶函数传参时,使用lambda表达式,往往能简化代码 生成器 generator 生成器指生成器对象,可以由生成器表达式得到,也可以使用yield关键字得到一个生成器函数,调用这个函数得到一个生成器对象 生成器函数 函数体中包含yield语句的函数,返回生成器对象 生成器对象,时一个可迭代对象 生成器对象时延迟计时,惰性求值的 包含yield语句的生成器函数生成生成器对象时,生成器函数的函数体不会立即执行 next(generator)会从函数的当前位置向后执行到之后碰到第一个yield语句,会弹出值,并暂停函数执行 再次调用next函数,和上一条一样的处理过程 没有多余的yield语句被执行,继续调用next函数,会抛出StopIteration异常 python函数 标签:匹配 过程 生成器 求值 可变参数 简化 递归函数 要求 不能 原文地址:https://www.cnblogs.com/zuohaipeng/p/9532994.html
闭包:在嵌套函数中,内层函数用到外层函数的自由变量def fib(x, a=0, b=1):
for i in range(x):
a, b = b, a + b
yield a
for j in fib(10):
print(j)