########## 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)