python制作_python 制作模块(中)

这是一篇关于python的文章

我们将继续学习写一个模块,这是最后关于介绍函数的文章。

事不宜迟,我们现在开始。

1.内嵌函数098f7205bce9dd5300950f8d723d7178fb28449d.png

简单来说“内嵌函数”就是在函数里定义了函数。先来看看一个例子吧:

虽然这看起来并没有用,但只要合理运用,它可以发挥不小的作用呢。

还有就是作用域:在函数内定义的函数是不可以在在外部调用的。f40e36068c235a5d079bb8b208d5778667909b06.png

2.闭包

闭包是各种语言函数结构的一种。而python的语法结构请参见下面这个图。126e1f4cb86693b21093751f9129bc0bdcca6f19.png

概念:如果在一个内部函数里(就是X)对外部作用域(不是全局哟)的变量进行引用(x就是被引用的变量,x在外部作用域X里,但不在全局里),则这个内部函数就是闭包。

注意:同内嵌函数一样,你是不能在外部调用它的424d117d842d65a934cdfdf00317f41da1bba040.png

这个报错与之前讲全局变量是一样的,因为python外认为部函数x是局部变量时,外部变量x就被‘屏蔽’了,所以根本找不到x的值。

但有两个解决方法:a4311ff5ef82820d4c50ae7c5c79b37b1de32ded.png

(1)用容器(字符串、列表、元祖...)存放是一个好方法。因为容器并不是存放在栈里,所以容器就不会被‘屏蔽’。

(2)用上python3特有的关键字nonlocal就可以了。

3.lambda表达式b06831f7b333753f33bc36d1852f37ba48661ecd.png

lambda是一个关键字用来创建匿名函数

特点:

(1)用python写一些脚本时,用lambda定义函数可以省去定义过程。这使得代码变得异常精简

(2)对于那些只有调用一两次的函数,可以用lambda解决。而且起名字也不在变得那么麻烦了

(3)再有就是可读性,一般函数要到开头寻找,而lambda可以省去这样的步奏

4.关于函数的两个BIF

4.1.filter()

filter是一个筛选器。它有两个值第一个值不是必要的,该值是函数名。第二值是可迭代值。由这个可迭代值的每一个值作为函数的参数,由返回参数为Ture时作为filter的返回值。(在不设置情况下,可迭代值中为True的值将为返回的值)当然filter返回的值必须由list\tuple\...转换为可视的值。

4.2.map()

和filter一样只不过返回的序列是函数直接返回的值

5.递归

递归就是函数自身调用自身的行为。(如果有兴趣,我可以单独做一期)

那么感谢大家的阅读,我会立马赶下一期的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值