python 常用语法及命令(二) 函数 内嵌 闭包 lamda

python 函数

函数的函数、内嵌 、闭包、lamda表达式、递归

看定义不如看实例系列

1、函数基础

1>__doc__ 函数默认属性 打印函数文档 #例如print__doc__

help()也可以

python 常用语法及命令(二) 函数 内嵌 闭包 lamda

2>可变参数(收集参数) 

就是把参数变成一个元组

python 常用语法及命令(二) 函数 内嵌 闭包 lamda

 3>返回值

    函数没有return 也会返回一个空值

python 常用语法及命令(二) 函数 内嵌 闭包 lamda

 

python 常用语法及命令(二) 函数 内嵌 闭包 lamda

 

 2、 python支持嵌套函数

python 常用语法及命令(二) 函数 内嵌 闭包 lamda

3、闭包

https://www.cnblogs.com/yssjun/p/9887239.html

一个函数定义中引用了函数外定义的变量,并且该函数可以在其定义环境外被执行。这样的一个函数我们称之为闭包。

看文字不好理解的定义,看实例就好了。

python 常用语法及命令(二) 函数 内嵌 闭包 lamda

能看出来满足两个条件 :一是函数(FunY)定义中引用了函数外定义的变量(x),二是该函数可以在其定义环境外被执行。

下面返回Fun2()  会有一个错误

python 常用语法及命令(二) 函数 内嵌 闭包 lamda

return Fun2()会执行函数,而Fun2函数中的x是非全局变量的外部变量,所以 Fun2()中使用x变量是未定义的

使用容器可以解决

python 常用语法及命令(二) 函数 内嵌 闭包 lamda

python3中使用 nonlocal 将变量声明为不是局部变量

python 常用语法及命令(二) 函数 内嵌 闭包 lamda

 

4、lamda表达式

   lamda表达式主要是使代码精简,尤其在python写脚本的时候,还避免给函数起名字,在函数只使用一两次的时候用lamda就大大简化了,可读性也高

python 常用语法及命令(二) 函数 内嵌 闭包 lamda

   1> filter函数中使用lamda

python 常用语法及命令(二) 函数 内嵌 闭包 lamda

2> map中使用lamda

python 常用语法及命令(二) 函数 内嵌 闭包 lamda

 

4、递归

设置递归最大层数

python 常用语法及命令(二) 函数 内嵌 闭包 lamda

1>斐波那契数

兔子繁殖问题

python 常用语法及命令(二) 函数 内嵌 闭包 lamda

python 常用语法及命令(二) 函数 内嵌 闭包 lamda

python 常用语法及命令(二) 函数 内嵌 闭包 lamda

随着n的增大,递归的时间远多于循环迭代

2>汉诺塔

(百度百科)汉诺塔:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。

核心思想就是处理64盘子先处理钱63个

python 常用语法及命令(二) 函数 内嵌 闭包 lamda