day 15 面向过程编程 函数式 (2)

##########  2.0__面向过程(理论)----总结   #############

# 编程思想/范式

# 面向过程的编程思想:
# 核心是"过程"二字,过程即流程,指的是做事的步骤:先什么、再什么、后干什么
# 基于该思想编写程序就好比在设计一条流水线

# 优点:复杂的问题流程化、进而简单化
# 缺点:扩展性非常差

# 面向过程的编程思想应用场景解析:
# 1、不是所有的软件都需要频繁更迭:比如编写脚本
# 2、即便是一个软件需要频繁更迭,也不并不代表这个软件所有的组成部分都需要一起更迭


##########       3.0__函数式----总结     #############

# 1.0 def 用于定义有名函数

# 在调用时 必须写成函数名加()的形式 有参数必须加上参数才能够进行调用成功

def func(x,y):
return x+y

# print(func) # func=函数的内存地址: <function func at 0x0000023BDFFC9168>

# 调用阶段 :
# print(func(1,2)) #输出结果为3


# 2.0 lambda用于定义匿名函数
print(lambda x,y:x+y) # 输出结果:<function <lambda> at 0x000001F6FFA644C8>


# 3.0 调用匿名函数
# 方式一:
res=(lambda x,y: x+y )(1,2)
print(res)

# 方式二 :
func=lambda x,y:x+y
res=func(1,2)
print(res)

#4、匿名用于临时调用一次的场景:更多的是将匿名与其他函数配合使用


匿名函数的案例应用
salaries={
'siry':3000,
'tom':7000,
'lili':10000,
'jack':2000
}
# 需求1:找出薪资最高的那个人=》lili
# res=max([3,200,11,300,399])
# print(res)

# res=max(salaries)
# print(res)


salaries={
'siry':3000,
'tom':7000,
'lili':10000,
'jack':2000
}
# 迭代出的内容 比较的值
# 'siry' 3000
# 'tom' 7000
# 'lili' 10000
# 'jack' 2000

# def func(k):
# return salaries[k]

# ========================max的应用
# res=max(salaries,key=func) # 返回值=func('siry')
# print(res)

# res=max(salaries,key=lambda k:salaries[k])
# print(res)

# ========================min的应用
# res=min(salaries,key=lambda k:salaries[k])
# print(res)


# ========================sorted排序
# salaries={
# 'siry':3000,
# 'tom':7000,
# 'lili':10000,
# 'jack':2000
# }
res=sorted(salaries,key=lambda k:salaries[k],reverse=True)
# print(res)

# ========================map的应用(了解)
# l=['alex','lxx','wxx','薛贤妻']
# new_l=(name+'_dsb' for name in l)
# print(new_l)

# res=map(lambda name:name+'_dsb',l)
# print(res) # 生成器
# ========================filter的应用(了解)
# l=['alex_sb','lxx_sb','wxx','薛贤妻']
# res=(name for name in l if name.endswith('sb'))
# print(res)

# res=filter(lambda name:name.endswith('sb'),l)
# print(res)

# ========================reduce的应用(了解)
from functools import reduce
res=reduce(lambda x,y:x+y,[1,2,3],10) # 16
print(res)

res=reduce(lambda x,y:x+y,['a','b','c']) # 'a','b'
print(res)
"""


salaries={
'siry':3000,
'tom':7000,
'lili':10000,
'jack':2000
}
# 需求1:找出薪资最高的那个人=》lili
# res=max([3,200,11,300,399]) # max函数的应用
# print(res)

res=max(salaries)
print(res) # tom 是输出结果?? 因为我们迭代字典时主要时key(根据Ascall码)、而非是value

salaries={
'siry':3000,
'tom':7000,
'lili':10000,
'jack':2000
}
# 迭代出的内容 比较的值
# 'siry' 3000
# 'tom' 7000
# 'lili' 10000
# 'jack' 2000


# ========================max的应用
# 方案一
def func(k):#用于提取字典中的 value的值
return salaries[k]
res=max(salaries,key=func) # 返回值=func('siry')
print(res)

# res=max(salaries,key=lambda k:salaries[k])
# print(res)

# ========================min的应用
# res=min(salaries,key=lambda k:salaries[k])
# print(res)


# ========================sorted排序
# salaries={
# 'siry':3000,
# 'tom':7000,
# 'lili':10000,
# 'jack':2000
# }
# res=sorted(salaries,key=lambda k:salaries[k],reverse=True)
# print(res)

# ========================map的应用(了解)
# l=['alex','lxx','wxx','薛贤妻']
# new_l=(name+'_dsb' for name in l)
# print(new_l)

# res=map(lambda name:name+'_dsb',l)
# print(res) # 生成器
# ========================filter的应用(了解)
# l=['alex_sb','lxx_sb','wxx','薛贤妻']
# res=(name for name in l if name.endswith('sb'))
# print(res)

# res=filter(lambda name:name.endswith('sb'),l)
# print(res)

# ========================reduce的应用(了解)
# from functools import reduce
# res=reduce(lambda x,y:x+y,[1,2,3],10) # 16
# print(res)
#
# res=reduce(lambda x,y:x+y,['a','b','c']) # 'a','b'
# print(res)
原文地址:https://www.cnblogs.com/kwkk978113/p/13348181.html