函数(二)
共 1338字,需浏览 3分钟
·
2020-09-19 07:16
一、函数参数
1.定义函数的参数:固定参数/可变参数
定义函数时,参数可以有两种;一种是在参数表中写明参数名key的参数,固定了顺序和数量,如:
• def func(key1, key2, key3…):
• def func(key1, key2=value2…)
另一种是定义时还不知道会有多少参数传入的可变参数,如:
• def func(*args): #不带key的多个无名参数
• def func(**kwargs): #key=val形式的多个命名参数
2. 调用函数的参数:位置参数/关键字参数
调用函数的时候,可以传进两种参数;一种是没有名字的位置参数,如func(arg1,arg2, arg3…),会按照前后顺序对应到函数参数。
另一种是带key的关键字参数,如func(key1=arg1,key2=arg2…),由于指定了key,可不按顺序对应。如果混用,所有位置参数必在前,关键字参数必在后。
3.调用函数的参数:解包
对于有多个参数的函数,可以单个序列或字典“解包”对应到每个参数,如:func(*aseq):序列解包对应到每个位置参数,func(**adict):字典解包对应到每个关键字参数。
二、函数式编程
相对于复杂算法步骤的编程范式,函数式编程通过表达式和函数的操作来定义函数,强调对结果的描述,而不是过程,不会有副作用(影响函数之外的数据,如全局变量),函数可以是变量的值,函数可以作为参数传递,函数可以作为返回值,经常使用递归定义,而不是迭代和循环。
三、map函数
有时候,需要对列表中每个元素做一个相同的处理,得到新列表,例如所有数据乘以3 ;例如所有字符串转换为整数;例如两个列表对应值相加。map(func, list1, list2….),函数func有几个参数,后面就跟几个列表。
四、函数表达式:lambda
• 有时候,函数只用一次,其名称也就不重要,可以无需费神去def一个
• Lambda表达式可以返回一个匿名函数:lambda <参数表>:<表达式>
五、函数作为参数:reduce函数
reduce函数对列表进行滚动式处理,最终得到一个值,例如,累加,累乘等等。reduce(func, list) 相当于:func(func(func(list1,list2),list3),list4)....reduce(lambda x, y: x+y, [1, 2, 3, 4, 5])相当于:((((1+2)+3)+4)+5)。
六、函数作为参数:filter函数
filter函数对数据集中的对象逐个调用func,如果结果为真,则保留这个对象;否则抛弃这个对象。
推荐阅读
《数据科学与人工智能》公众号推荐朋友们学习和使用Python语言,需要加入Python语言群的,请扫码加我个人微信,备注【姓名-Python群】,我诚邀你入群,大家学习和分享。
关于Python语言,有任何问题或者想法,请留言或者加群讨论。