跟艾文学编程Python基础(3)Python函数
跟艾文学编程《Python基础》
(3)Python函数作者:艾文,计算机硕士学位,企业内训讲师和金牌面试官,公司资深算法专家,现就职BAT一线大厂
内容:跟艾文学编程《Python基础》
学习目标
Python中的方法函数
函数中的参数
函数参数传递
匿名函数lambda
高阶函数filtermapreduce
实战练习
方法定义
在python中我们学习来一些数据结构类型中含有一些实现好的方法,这些方法可以作为对象的一部分,这些方法看成一个函数
对象中方法使用情况
object。method(arg1,arg2,etc。。。)
那么我们通过list快速查看一些方法
list中有很多的方法,主要方法?
可以通过help来了解一些方法,例如:
Python中函数
函数是组织好的,可以重复使用的,用来实现单一或者关联功能代码段
自定义函数,规则步骤:
函数代码以def函数关键词开头,后面函数标识和括号
任何传输的参数必须放在括号内
函数的第一行语句可以选择性使用文档字符串(用于存放函数说明)
return〔表达式〕结束函数,选择行返回一个数值,主要提供给调用方;如果没有返回内容实际returnNone
语法案例:
deffunctionname(paramter):函数文档字符串functionsuitereturn〔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
reducefilter
刷选序列filter(func,list),将func作用于list中每个元素,最终根据func函数return结果false还是true进行保留或者丢弃某个元素
语法:
filter(functionorNone,iterable)filterobject
作业:通过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,,,keyNone,reverseFalse)
作业2:统计字符串每个字符出现次数
作业3:list序列中输入偶数
要求使用filter
语法:
filter(functionorNone,iterable)filterobject
作业4:计算一个圆的面积
让我们一起加油,学习交流群。
都说迪丽热巴不上镜?看到路人拍的无修图,我信了粉丝一直都说迪丽热巴不上镜,本来以为是因为粉丝对迪丽热巴有滤镜才这么说,直到看了路人拍的无修图之后,才真正相信原来迪丽热巴的美貌一直都被大家低估了。对于普通女孩子来说,如果能够学会
发缝越来越宽,千万不要大意,这个方法,拯救受损毛囊发缝越来越宽,梳头或者洗头时脱发明显增多。随着时间推移,甚至头顶就会出现裸露,然后蔓延四周,40岁左右的时候,就出现整体稀疏。相信很多女性朋友们都有这样的体会,那么为什么会出现这样
最帅男士发型有哪些?看看这4种,精神还有型男士发型多种多样,但并不是每种都足够帅气,所以选择发型就很关键,但今天为大家带来了的4种男士发型都很帅气,精神时尚很有型,接下来我们就一起看看吧。男士寸头大多数男人都喜欢超简单的寸
精致,是女人的尊严唐瑛作为20世纪二三十年代旧上海的一颗闪耀的明星,她与陆小曼齐名,素有南唐北陆之名。她活的自在潇洒,在那个美女云集的花花城市,她从来都是最受瞩目的那个,纵然岁月的轻霜爬上脸颊,纵然
北纬18蓝的海南明年假期可以计划的旅行海南位于中国大陆最南端,中国国土最大的一个省份。我原来一直以为新疆是最大的,出行前了解了一下,原来海南加上海域面积,是占中国领土最大的一个省份。时间出行天数5天地点三亚蜈支洲岛出行
世界杯球队背后的车企,大众包揽7支劲旅,日产丰田压错宝?卡塔尔地处波斯湾西南岸,热带沙漠气候使卡塔尔的夏季漫长而又炎热,最高气温可达50。因此,2022卡塔尔世界杯也就成了首届由北半球国家举办的冬季世界杯。32支队伍参赛,上百万球迷相聚
卡塔尔世界杯,这3名巨星或提前回家,球迷梅球王一只脚在家了近日,卡塔尔世界杯成为球迷关注的焦点。四年一度的世界杯,或许会有很多亮点值得球迷去回味,可就在刚刚,有球迷对本届世界杯已经结束的比赛进行了分析。认为这3名巨星或提前回家,甚至有些过
为何世界杯伤停补时这么久?卡达首日赛事狂破50年纪录2022卡达世界杯21日正式开踢,根据英国体育分析公司OptaSports数据,1966年以来,世界杯单个半场比赛伤停补时(Stoppagetime)最久的前4名都发生在今年首日赛
特斯拉又双双缀缀出事故!与MCU有关吗?哔哥哔特导读特斯拉又双双缀缀出事故!负责新能源汽车制动的整车控制器中的MCU有什么技术要求?MCU厂商要付出多少努力才能解决汽车安全问题?近日,广东潮州一辆特斯拉ModelY失控致
旺季不旺的快递行业,分化洗牌将再度提速?11月快递行业整体业务量不及预期,双11当日业务量5。52亿件同比下滑20。69,11月1日至11日全国快递业务量共完成42。72亿件,同比下降10。6。根据交通部最新数据,11月
万能的华强北,也救不活iPhone14对于iPhone14系列,苹果的产品策略发生了重大变化。其中iPhone14iPhone14Plus没有用上最新款的芯片,而是继续沿用A15,这导致它们和iPhone13无法拉开差