学习Python的笔记11--函数加强

1、 lambda表达式

1、语法:lambda 参数列表 :表达式

注意:

1、lambda表达式的参数可有可无,函数的参数在lambda表达式中完全适用。

2、lambda表达式能接收任何数量的参数但只能返回一个表达式的值。

3、直接打印lambda表达式,输出的是此lambda的内存地址

#需求:函数返回值100
#1.函数
def fn1():
    return 100
result=fn1()
print(result)

#2.lambda匿名函数
#lambda参数列表:表达式
fn2=lambda:100#简化代码
print(fn2)#at0x000001F27AB85048>内存地址
#100返回值调用函数
print(fn2())#100

2、计算a+b

 1、函数实现

#需求:计算任意两个数字的累加和
#1.函数
def add(a,b):
    return a+b
result=add(1,2)
print(result)

 2、 lambda实现

#2.lambda
fn1=lambda a,b:a+b
print(fn1(1,2))

3、 lambda的参数形式 

1、无参数

#无参数
fn1=lambda:100
print(fn1())#100

 2、一个参数

#一个参数
fn2=lambda a:a
#返回值也是a所以打印的数据既是helloworld
print(fn2('helloworld'))#helloworld

3、默认参数

#默认参数-缺省参数
fn3=lambda a,b,c=100:a+b+c
print(fn3(10,20,200))#230
#覆盖了原有的100

4、可变参数

注:返回值为元组

#可变参数-*args
fn4=lambda *args :args
print(fn4(10,20))
print(fn4(10,20,30,40))
print(fn4(10))
#可变参数-**kwargs
#不定长
fn5=lambda **kwargs :kwargs
print(fn5(name='naonao',age= 20))

4、lambda的应用

带判断的lambda

需求:三目运算符,三元表达式有两个形参就要有两个数据ab比大小,谁大返回谁

fn1=lambdaa,b:a if a>b else b
print(fn1(1000,500))#1000

2、高阶函数

作用:函数式编程大量使用函数,减少了代码的重复,使程序变短,开发速度变快。

内置高阶函数-三个常用的

1、map()

map(func函数名, lst列表序列)

将传入的函数变量func作用到lst变量的每个元素中,

并将结果组成新的列表(Python2)/迭代器(Python3)返回。

实例:

需求:计算list1序列中各个数字的2次方。

#1.准备列表数据序列
list1=[1,2,3,4,5]
#2.准备2次方计算的函数
def func(x) :
     return x**2
#3.调用map map函数在Python2解释器环境下运行返回一个列表,Python3返回一个迭代器
result=map(func,list1)
#4.验收成果
print(result)#内存地址
print(list(result))#[1,4,9,16,25]转换数据类型可以验证

2、reduce()

reduce(func,lst),

func必须有两个参数

每次func计算的结果继续和序列的下一个元素做累积计算

实例:

        需求:计算list1序列中各个数字的累加和。

list1=[1,2,3,4,5]
#1.导入模块
import functools
#2.定义功能函数
def func(a,b):
    return a+b
#3.调用reduce,作用:功能函数计算的结果和序列的下一个数据做累计计算
result=functools.reduce(func,list1)
print(result)#1+2+3+4+5=15

3、 filter()

filter(func, lst)

函数用于过滤序列,过滤掉不符合条件的元素,返回一个filter对象。

如果要转换为列表,可以使用list()来转换。

实例:

#1.准备数据序列
list1=[1,2,3,4,5,6,7,8,9,10]
#2.封装函数,过滤序列中的偶数
def func(x):
    return x%2==0
#按照工作需求来写代码
#3.调用filter验证结果filter函数过滤掉了不是偶数的数据
result=filter(func,list1)
print(result)#
print(list(result))#[2,4,6,8,10]
#4.filter作用是过滤序列中符合条件的数据对象,留下的是符合条件的,不符合条件的,被过滤掉了

  

你可能感兴趣的:(学习,笔记,python)