跟艾文学编程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: 计算一个圆的面积
让我们一起加油, 学习交流群。
模特面试会上,多名女生因衣服不合身而显得尴尬,但仍然自信十足人靠衣装,佛靠金装,体面的穿衣着装能让一个人提升气质,对于身材苗条的女生来说,紧身衣更能把她的身体曲线完美无瑕地呈现出来,如果穿着不合自己身材的衣服,只会显得不伦不类。说起苗条身材
2条基础款裤子就能搞定10套搭配,简洁省时还得体,穿出日常时尚我们的裤子相对来说款式都比较简单,其实你会发现,只要有几条基础款式的裤子,就能穿出花式搭配,今天就让我们来看看牛仔裤和白色裤子的10套穿搭吧。先从白色裤子聊起吧,春天一条白色牛仔裤
衣服轮流穿!中国明星只能坐角落,刘亦菲周冬雨谷爱凌巴黎看秀说一下巴黎时装秀的事吧巴黎时装周LV时装秀前排的位置图公布了(做了文字总结)路威酩轩集团的首席执行官身边有时尚女演员安娜,和代言人维坎德,美国顶星Zardaya还距离很远,她是嘉宾
湾区翼龙海外练级7个月,5万人潮和日式礼貌都经历了从CBA到NBL再到东超,刘传兴(右)丰富了职业生涯履历。从菲律宾PBA委员杯到东亚篮球超级联赛(以下简称东超)冠军周,湾区翼龙队以一个亚军一个季军结束了7个月的海外征战。对刘传兴
有颜有气质!来芝罘,探春!春风和煦,草木萌发今天,我们迎来惊蛰节气开往春天的列车缓缓驶来早春出游寻一份春韵,品几种浪漫芝罘春天的打开方式来啦哪种是你的心头好?日出日落春意萌动,浪漫至极春日来芝罘看一场日出日
你知道怎么挑选适合自己的墨镜和眼镜款式吗天气越来越热了,小编的防晒用品都拿出来了,不知道各位小伙伴那里的天气怎么样,小编现在出门已经是全副武装的,防晒衣和防晒伞都是必备,但是最近小编发现还缺少了最重要的防晒用品,缺少一副
如果与杜兰特打挡拆,保罗和库里,哪一对组合威胁更大?如今的太阳真的是春风得意,全员身体健康,杜兰特又伤愈复出。刚打的两场比赛都是轻松取胜,不少球迷都喊道太阳总冠军!的确,太阳是本赛季总冠军的有力竞争者,但是相比起当年的宇宙勇,似乎还
气溶胶如何影响全球各地的气候和空气质量?中国生物多样性保护与绿色发展基金会(中国绿发会绿会)是联合国气候变化框架公约(UNFCCC)的观察员机构,对全球气候变化议题持续保持高度关注。近日,绿会气候变化工作组从科学进展获悉
刘亦菲果然和谁合照都是赢啊,气质真的绝绝子最近刘亦菲亮相巴黎时装周,大方晒出了和青蛙公主谷爱凌的合照,果然神仙姐姐即使30了,但是和18岁的小姑娘合照依旧艳压啊,气质摆在那边了,而且白真的有优势啊。在人群中她就是一亮眼的风
继莫雷拉之后,潘顿又要走?前几日,一马君报道了澳洲籍骑师潘顿即将离港返澳的消息后,引发马友关注和热议!今日又有消息称,在澳洲马友和练马师的鼎力支持下,潘顿或将于3月19日举行的2023年宝马香港打吡大赛之后
清晨寄语学会站在不同的角度看问题学会站在不同的角度看问题所有的问题都是多元的,有些人遇到问题后,往往只是片面的认识,却自以为了解真相,于是凭着直觉妄加评判。最近关于系统调控的一些问题,有些伙伴不能理解,抱有一定的