跟艾文学编程Python基础(3)Python函数
跟艾文学编程《Python基础》
(3)Python 函数 作者: 艾文,计算机硕士学位,企业内训讲师和金牌面试官,公司资深算法专家,现就职BAT一线大厂
内容:跟艾文学编程《Python基础》
学习目标
● Python中的方法/函数
● 函数中的参数
● 函数参数传递
● 匿名函数lambda
● 高阶函数 filter map reduce
● 实战练习
方法定义
在python中我们学习来一些数据结构类型中含有一些实现好的方法,这些方法可以作为对象的一部分,这些方法 看成一个函数
对象中方法使用情况
object.method(arg1,arg2,etc...)
那么我们通过list快速查看一些方法
list 中有很多的方法,主要方法?
可以通过help来了解一些方法,例如:
Python 中函数
函数是组织好的,可以重复使用的,用来实现单一或者关联功能代码段
自定义函数,规则步骤:
● 函数代码以def 函数关键词开头,后面函数标识和括号
● 任何传输的参数必须放在括号内
● 函数的第一行语句可以选择性使用文档字符串(用于存放函数说明)
● return [表达式] 结束函数,选择行返回一个数值,主要提供给调用方;如果没有返回内容-实际return None
语法案例:
def function_name(paramter): " 函数_ 文档字符串" function_suite return [expression]
项目: 如果自定义一个函数
def 定义函数,给定一个函数的名字sum
声明两个参数,num1,num2
函数的第一行语句进行函数说明: 两个数字之和
最终return 语句结束函数,并返回两个函数的和
函数参数
默认数值参数
自定义函数中,如果调用时候没有设置参数,需要给默认参数,这个需要用到这种方法
关键词参数
可以通过参数名来给函数传递参数,而不关心参数列表定义的顺序,这个成为关键词参数。
优点:
● 由于我们不担心参数的顺序,使用函数变得更加简单
● 假设其它参数都有默认数值,我们可以只给我们想要的数值重写
不定长参数
我们无法确定一传入的参数个数。Python提供一种tuple的方式接受没有直接定义参数。
使用方法:
在参数的前面加上个星号。如果在函数调用的时候没有使用参数,它默认空的元组
**kw 参数
可变参数也支持关键参数,没有被定义关键参数会被统一放到一个字典中
使用方法: 定义参数,前面加上 **
函数参数传递
不可更改的类型
类似c++ 数值传递,如:整数、字符串、元组。
如func(a),传递的只是a的数值,没有影响a对象本身,如果在func(a) 修改某个参数的数值,只是复制了 另外的一个对象,不会影响a本身的变换
可更改类型
类似c++ 引用传递,如: 列表、字典.
如 func(a) ,a 如果传递过去,在func内部进行了修改,会影响a的会变化(同步变更)
匿名函数lambda
python 中使用lambda 来创建匿名函数,不在使用def语句标准来定义一个函数
匿名函数优点:
● lambda 只是一个表达式,函数体比def 简单很多
● lambda 主体是一个表达式,而不是一个代码块。在这个中函数封装一些简单逻辑
语法:
lambda [arg1,[arg2,,,,]]:expression
下面我们通过使用lambda定一个功能: 两个函数的和
使用lamda函数做一个功能:
给你一个list数组,数组中的每个元素字符类型,希望长度进行排序
高阶函数
● filter
● map
● reduce filter
刷选序列filter(func,list),将func 作用于list中每个元素,最终根据func函数return 结果false还是true 进行保留或者丢弃某个元素
语法:
filter(function or None, iterable) --> filter object
作业: 通过filter 高阶函数完成打印list中的偶数(偶数是最终的结果)
如果filter 函数不会使用,可以借助help来学习
map
map(func,lst) 将lst中的每个元素作用func函数上,并将结果返回新的列表
作业: 对list 中的每个元素求平方
● 循环list 中的每个元素进行完成
● list 中列表推导方式来进行完成
● 使用map高级函数进行完成
reduce
reduce(func(x,y),lst)
其中func必须有两个参数。每次func计算的结果继续和序列中的下一个元素做累积计算
注意: 在Python3 中reduce 函数被取消来,放入到functools,所以使用前加上一条
作业: list 中的数据进行求和
● reduce 函数使用
● 解决该问题最常规的方法
变量作用域
一个程序的所有的变量并不是在哪个位置都可以访问的。访问权限决定于这个变量是在哪里赋值的。
变量的作用域决定了在哪一部分程序你可以访问哪个特定的变量名称。两种最基本的变量作用域如下:
● 全局变量:定义在函数外的拥有全局作用域
● 局部变量:定义在函数内部的变量拥有一个局部作用域
局部变量只能在其被声明的函数内部访问,而全局变量可以在整个程序范围内访问。 调用函数时,所有在函数内声明的变量名称都将被加入到作用域中
说明s0不能在函数外进行访问
如果f1 函数希望结果可以在外部进行起作用,使用global 关键词声明,内部变量升级全局变量
实战练习
作业1: sorted 函数列表降序
可以是列表、字典、set、甚至字符串
● sorted 函数如何使用
语法: sorted(iterable, /, *, key=None, reverse=False)
作业2: 统计字符串每个字符出现次数
作业3: list 序列中输入偶数
要求使用filter
语法:
filter(function or None, iterable) --> filter object
作业4: 计算一个圆的面积
让我们一起加油, 学习交流群。
唐玄宗为何迷恋杨玉环唐玄宗与杨贵妃的爱情被白居易的一首长恨歌讲述地曲折动人。自古以来,有很多帝王为了宠爱后妃使国家受害,百姓遭殃的例子,然而他们的爱情故事总会被作为其中一个例子来品评一番。也许你会困惑
炒股一旦遇到缩量中枢,果断进场,尽情享受主升浪的快乐悟道如果你想成为我们一个企业赚钱的散户投资者,你必须坚决改变自己过去的思维和学习教育投资。投资企业要有自己一个好的公司和好的价格,但一句简单来说的话却对很多人来说是比较困难的。想在
一个中成药防止钙流失,让疏松的骨质固若金汤有个中成药对骨质疏松效果很好,叫仙灵骨葆,好像仙丹般的灵验让骨骼永葆青春。什么人容易骨质疏松,老年人,肾气虚衰,而肾是主骨生髓的,这肾衰后,黄帝内经是怎么说的天癸竭,精少,肾脏衰,
送你3个中成药,化尽一身痰湿,上清肺痰,中化脾湿,下清肾湿你是不是经常觉得嗓子总有痰,痰多吐不完?那今天,胡医生为大家分享3个中成药,找出痰湿的根,切断生痰的源,从头到脚化痰湿,让你无痰一身轻。首先我们要明白,身体里的痰湿是从哪里来的?中
拥有终身球鞋合同有多难?NBA史上仅此六人,强如科比都没有NBA所有球员都拥有一个共同目标,那就是赢得荣誉赢得总冠军,然而说到底,NBA的本质就是一个商业联盟,所有的一切不过只是一门生意而已,所以通过NBA这个平台去挣更多的钱,这对于绝大
知人知面不知心,金敬道被带走接受调查,郝伟得以清白!知人知面不知心,金敬道被带走接受调查,郝伟得以清白!若说近一年当中最被热议的球队,毫无疑问肯定是山东泰山队。无论是主教练郝伟又或是吴兴涵戴琳等等单拿出来哪一个没有被曝出过负面消息呢
桨战金溪!这两项赛事即将在将乐开赛阳春三月深呼吸小城将乐春光无限好第7届中国将乐皮划艇桨板马拉松公开赛冠深杯桨者荣耀泳池100桨板挑战赛即将开赛!往期比赛精彩集锦左右滑动查看更多PART01活动日期和地点比赛时间2
去印尼,爬火山才是正事活动报名印度尼西亚这个太平洋上的千岛之国它的地理像一部火山的历史它的历史也与火山息息相关大约在新生代早期亚欧大陆板块和印度洋板块发生碰撞碰撞的边缘又相互重叠生成了太平洋弧形火山链而印尼正坐
澳门咔叽探店美式复古男装店TheRetroMacan在把澳门逛的差不多之后,去TheRetroMacan这家咔叽店逛了逛。我在ins上提前跟老板打了招呼问能不能来探店拍照,他表示非常欢迎,于是就有了这次探店TheRetroMacan
春到月亮坪山花烂漫惹人醉图集张平王利封面新闻记者罗轩阳春三月,草长莺飞。四川宣汉县月亮坪森林康养旅游度假区檫木樱花等花儿次第开放,一簇簇一丛丛,散落在崇山峻岭之中,吸引着达州周边县(市区)游客驻足观看,成为周
既知阳澄湖,能不识相城?放棹过湖曲,波淹落照红阳澄湖三月里的阳澄湖畔阳光轻柔,暖风习习大片油菜花田即将盛开等待春风洒下耀目的金色花海油菜花的花期在三月下旬至四月届时,碧蓝的水晶天下微风翻涌起层层叠叠的油菜