python 常用语法及命令(二) 函数 内嵌 闭包 lamda
python 函数
函数的函数、内嵌 、闭包、lamda表达式、递归
看定义不如看实例系列
1、函数基础
1>__doc__ 函数默认属性 打印函数文档 #例如print__doc__
help()也可以
2>可变参数(收集参数)
就是把参数变成一个元组
3>返回值
函数没有return 也会返回一个空值
2、 python支持嵌套函数
3、闭包
https://www.cnblogs.com/yssjun/p/9887239.html
一个函数定义中引用了函数外定义的变量,并且该函数可以在其定义环境外被执行。这样的一个函数我们称之为闭包。
看文字不好理解的定义,看实例就好了。
能看出来满足两个条件 :一是函数(FunY)定义中引用了函数外定义的变量(x),二是该函数可以在其定义环境外被执行。
下面返回Fun2() 会有一个错误
return Fun2()会执行函数,而Fun2函数中的x是非全局变量的外部变量,所以 Fun2()中使用x变量是未定义的
使用容器可以解决
python3中使用 nonlocal 将变量声明为不是局部变量
4、lamda表达式
lamda表达式主要是使代码精简,尤其在python写脚本的时候,还避免给函数起名字,在函数只使用一两次的时候用lamda就大大简化了,可读性也高
1> filter函数中使用lamda
2> map中使用lamda
4、递归
设置递归最大层数
1>斐波那契数
兔子繁殖问题
随着n的增大,递归的时间远多于循环迭代
2>汉诺塔
(百度百科)汉诺塔:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。
核心思想就是处理64盘子先处理钱63个