跟艾文学编程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: 计算一个圆的面积
让我们一起加油, 学习交流群。
腰背酸痛难忍?一味中成药,补肾强腰,向你的腰间注入活力总是感觉到腰背酸痛难忍,弯曲转侧都很痛苦。甚至检查出了骨质增生疏松。这是哪里出了问题?今天刘医生就给大家讲清楚,再分享一个补肾强腰的中成药,向你的腰间注入活力。为什么会腰疼呢?中医
千年的烟火书香,尽在古镇法庭的司法守望里忆江南江南好,风景旧曾谙。日出江花红胜火,春来江水绿如蓝。能不忆江南?熠然法影又经历一周暴晒,在空调房里憋出内伤的心按捺不住蠢蠢欲动,数着日子巴望天凉好个秋,赶紧出去走一走,阳光适
桂林山水甲天下后半句丢失千年,80年代才被发现,原来这么美大自然的每一个领域都是精美绝伦的,艺术上可能会出错,但是大自然不会,当然我们也应该对大自然有一颗敬畏之心。世界上有很多令人心生向往的地方,其中桂林的壮美就令人十分向往,很多美景令人
这是我见过的最割裂的城市,没有之一去过福州的人,想必都有一个感慨,从长乐机场,开车到市区的路上,就是不断地穿山越岭,层峦叠嶂的山峰,将福州切割成2个世界,市区和郊区之间,城市界面有大面积的断裂带。东有鼓山,西有旗山
关于西瓜,你知道的太少啦炎炎夏日西瓜是最不能缺少的水果!不过平时您会好好利用瓜皮吗?合理使用西瓜皮还能解决生活中的健康小问题去除痱子中医认为,痱子是由于盛夏时节,暑热挟湿,蕴结肌肤,导致毛窍郁塞所致,而西
咳嗽咽痒胸闷,可能是肝肺失调了!常喝3杯茶,止咳化痰更护喉张女士,咳嗽长达两三年,最严重的时候每晚咳得不能入睡。还时常胸闷,喉咙痒但又咳不出东西,严重影响了日常生活。这种奇怪的咳嗽到底是怎么来的呢?这还要从肝肺的气机讲起。人体内存在三对与
每天到底要喝多少水?水是生命之源,我们人体60左右的重量都是水。水对于人体的重要性不言而喻,它帮我们调整体温,润滑器官和关节帮我们溶解运输养分,也帮我们排除废物和毒素按照中国膳食指南的推荐,我们一天需
清热利湿龙胆泻肝丸,具体适合什么症,医生分6种情况讲明白今天来介绍一个药店里很常见的中成药龙胆泻肝丸,它虽然便宜,但是功效却很强大,可以清肝胆利湿热,但你绝对不知道,它还可以治疗下面这6种病。我们先来看一下龙胆泻肝丸的组成,其中的龙胆草
风热感冒的12种中成药,家中常备1银翘解毒颗粒清热解毒辛凉透表,用于风热感冒所引起的头痛发热咽喉疼痛汗出不畅等。2桑菊感冒片清热解毒疏散风热。用于风热感冒初期引起的头痛咳嗽口干咽痛等。3夏桑菊颗粒疏散风热清肝明目
一个补肾精的方子,两味中药泡水,助你补肾益精你知道吗?我们每天都在损耗肾精,它是肾脏储藏的一种物质,身体相当于一盏油灯,而肾精就是里面的灯油。每天说话做事思考都会消耗肾精,肾精耗损完了,身体自然就殆尽了,那么我们要如何弥补失
用玉米须泡茶,能缓解痛风?网友提问我得痛风有一段时间了,最近朋友给我介绍了个偏方,说用玉米须泡茶可以缓解痛风,我想知道是真的吗?你朋友说的没错,用玉米须泡茶确实可以缓解痛风。中医认为,玉米须,性平,味甘,归