前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python3急速入门(三)函数与lambda表达式、闭包

Python3急速入门(三)函数与lambda表达式、闭包

作者头像
小小科
发布2018-05-02 14:04:44
7370
发布2018-05-02 14:04:44
举报
文章被收录于专栏:北京马哥教育

函数 是组织好的、可重复使用的、用来实现单一或相关联功能的代码段。

  • 函数代码块以def关键词开头,后接函数标识符名称和圆括号()
  • 任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数
  • 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明
  • 函数内容以冒号起始,并且缩进
  • Return[expression]结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None

一、函数的定义:

若采用默认参数定义函数,调用函数时,缺省参数的值如果没有传入,则被认为是默认值:

不定长参数。加了星号(*)的变量名会存放所有未命名的变量参数。选择不多传参数也可:

所有参数(自变量)在Python里都是按引用传递。如果在函数里修改了参数,那么在调用这个函数的函数里,原始的参数也被改变了

return语句[表达式]退出函数,选择性地向调用方返回一个表达式。不带参数值的return语句返回None

内部函数。函数体内可以再定义函数:

二、函数变量作用域

定义在函数内部的变量拥有一个局部作用域,定义在函数外的拥有全局作用域。

局部变量只能在其被声明的函数内部访问,而全局变量可以在整个程序范围内访问。调用函数时,所有在函数内声明的变量名称都将被加入到作用域中

三、Python闭包

如果在一个内部函数里,对在外部作用域(但不是在全局作用域)的变量进行引用,那么内部函数就被认为是闭包(closure)。一个闭包就是你调用了一个函数A,这个函数A返回了一个函数B给你。这个返回的函数B就叫做闭包。你在调用函数A的时候传递的参数就是自由变量

四、匿名函数

python 使用 lambda 表达式来创建匿名函数

lambda只是一个表达式,函数体比def简单很多

lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去

lambda函数拥有自己的名字空间,且不能访问自有参数列表之外或全局名字空间里的参数

虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率

lambda函数的语法只包含一个语句: lambda [arg1 [,arg2,.....argn]]:expression

使用如下:

五、内置函数filter的使用:

官方文档内容如下:

filter(function, iterable)

Construct an iterator from those elements of iterable for which function returns true. iterable may be either a sequence, a container which supports iteration, or an iterator. If function is None, the identity function is assumed, that is, all elements of iterable that are false are removed.

function参数可传入None、函数、lambda表达式,iterable参数传入一个可迭代对象。

若function参数为None:返回可迭代对象中所有不为False的元素

若function参数为函数或lambda表达式:返回 将元素作为函数参数、函数返回值为True 的元素

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-04-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 马哥Linux运维 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档