学习目标● 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的会变化(同步变更) 匿名函数lambdapython 中使用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来学习 mapmap(func,lst) 将lst中的每个元素作用func函数上,并将结果返回新的列表 作业: 对list 中的每个元素求平方 ● 循环list 中的每个元素进行完成 ● list 中列表推导方式来进行完成 ● 使用map高级函数进行完成 reducereduce(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: 计算一个圆的面积让我们一起加油,学习交流群。 |
|