"""
编程范式
面向过程
考虑问题从步骤(细节/实现)出发
先做 -- 后用
面向对象 - 架构
封装: 分 -- 多个类 [先用]
老张 (思想层面:汽车 火车...)
继承: 隔 -- 父类 ------
交通工具
多态:做 -- 子类重写 [后做]
汽车 火车
函数式编程: - 功能
"封装": 分 -- 多个函数 [先用]
通用函数 (思想层面:姓名是xx的员工 编号是xx的员工...)
"继承": 隔 -- 参数 ------
func
"多态":做 -- lambda [后做]
姓名是xx的员工 编号是xx的员工
"""
内置高阶函数
1. map(函数,可迭代对象):使用可迭代对象中的每个元素调用函数,将返回值作为新可迭代对象元素;返回值为新可迭代对象。
2. filter(函数,可迭代对象):根据条件筛选可迭代对象中的元素,返回值为新可迭代对象。
3. sorted(可迭代对象,key = 函数,reverse = bool值):排序,返回值为排序结果。
4. max(可迭代对象,key = 函数):根据函数获取可迭代对象的最大值。
5. min(可迭代对象,key = 函数):根据函数获取可迭代对象的最小值。
"""
内置高阶函数
"""
from common.iterable_tools import IterableHelper
class EmployeeModel:
def __init__(self, eid=0, did=0, name="", money=0.0):
self.eid = eid
self.did = did
self.name = name
self.money = money
list_employee = [
EmployeeModel(1001, 9003, "林玉玲", 13000),
EmployeeModel(1002, 9005, "王荆轲", 16000),
EmployeeModel(1003, 9003, "刘岳浩", 11000),
EmployeeModel(1004, 9007, "冯舜禹", 17000),
EmployeeModel(1005, 9005, "曹海欧", 15000),
EmployeeModel(1006, 9005, "魏鑫珑", 12000),
]
# 1. map : 映射
# map(func,iterable) -> 生成器
for item in map(lambda item: item.name, list_employee):
print(item)
# for item in IterableHelper.select(list_employee,lambda item:item.name):
# print(item)
# 2.filter:过滤
# filter(func,iterable) -> 生成器
for item in filter(lambda emp: emp.money > 15000, list_employee):
print(item.__dict__)
# for item in IterableHelper.find_all(list_employee,lambda emp:emp.money > 15000):
# print(item.__dict__)
# 3.max 4.min : 最大最小
# 极值 = max(容器, key=函数)
max_emp = max(list_employee, key=lambda item: item.money)
print(max_emp.__dict__)
# max_emp =IterableHelper.get_max(list_employee,lambda item:item.money)
# print(max_emp.__dict__)
# 5. 排序
# -- 升序
# 排序结果 = sorted(容器, key=函数)
result = sorted(list_employee, key=lambda e: e.money)
print(result)
# IterableHelper.ascending_order(list_employee,lambda e:e.money)
# print(list_employee)
# -- 降序
# 排序结果 = sorted(容器, key=函数, reverse=True)
result = sorted(list_employee, key=lambda e: e.money, reverse=True)
print(result)
nonlocal 语句
1. 作用:
在内层函数修改外层嵌套函数内的变量
2. 语法
nonlocal 变量名1,变量名2, …
3. 说明
在被嵌套的内函数中进行使用
"""
函数作用域
- 外部嵌套作用域 语法
# 内部函数可以访问外部函数变量
# 如果修改外部函数变量,必须通过nonlocal声明
"""
# 外部函数
def func01():
# 局部变量:对文件而言
# 外部嵌套变量:对func02而言
a = 10
# 内部函数
def func02():
# 内部函数可以访问外部函数变量
print(a)
func02()
# 调用外部函数(内部函数不执行)
func01