目录

  • 一、闭包函数
  • 二、装饰器
    • 2.1 双层装饰器
    • 2.2 三层装饰器
    • 2.3 语法糖
  • 三、迭代器
  • 四、三元表达式
  • 五、列表推导式
  • 六、字典生成式
    • 6.1 zip()方法与字典生成式连用
  • 七、生成器和生成器表达式
    • 7.1 yield关键字
    • 7.2 生成器表达式
  • 八、匿名函数
  • 九、递归函数
  • 十、内置方法
  • 十一、面向过程编程

一、闭包函数

二、装饰器

装饰器: 装饰的工具(函数),这个函数有装饰的作用.可以理解为装饰器就是一个函数的加工厂

装饰器本质: 装饰器 就是一个函数A装饰的对象 也就是一个函数B

装饰器的实现必须遵循两大原则:

  1. 不改变函数B的调用方式
  2. 不改变函数B的源代码

2.1 双层装饰器

模板:

# 双层装饰器模板
def outer(func): # 函数对象形参def inner(*args, **kwargs):   # 函数形参# 加功能print(f"这里是函数参数args:{args}, kwargs:{kwargs}")res = func(*args, **kwargs)   # 解压缩 func是被装饰的函数 函数实参return resreturn inner

2.2 三层装饰器

模板:

# 三层装饰器模板: 给双层装饰器加参数的
def outer(engine): # 给装饰器传参def inner(func):    # func是真正的功能函数def wrapper(*args, **kwargs):  # wrapper是未来要运行的函数# 加功能print(f"这里是装饰器参数engine:{engine}")print(f"这里是函数参数args:{args}, kwargs:{kwargs}")res = func(*args, **kwargs)  # func是被装饰的函数return resreturn wrapper

2.3 语法糖

模板:

@outer     # 语法糖(表示使用outer函数进行装饰) 相当于 func = outer(func)
def func(*args, **kwargs):print('双层装饰器模板')

三、迭代器

  1. 可迭代对象:具有iter方法的对象(Python中一切皆对象)
  2. 迭代器对对象:具有iter和next方法
  • 迭代器对象一定是可迭代对象,可迭代对象不一定是迭代器对象(f)

四、三元表达式

模板:

def func(flag):print("对") if flag else print("错") # 三元表达式格式func(True)

五、列表推导式

模板:

lt = [i for i in range(10)]     # 列表推导式
print(lt)

六、字典生成式

模板:

# 字典生成式
new_dic = {k:v for k,v in {"a":1,"b":2}.items()}      # 字典生成式
print(new_dic)
res = {i:i**i for i in range(10)}   # 字典生成式
print(res)

6.1 zip()方法与字典生成式连用

字典生成式一般与zip()方法连用。zip方法必须传递两个长度一样的可迭代对象。

zip方法必须传递两个长度一样的可迭代对象。

# zip()方法
z = zip(['a', 'b', 'c', 'd'], [1, 2, 3, 4])      # 压缩方法,Python解释器的内置方法,得到 zip类型变量
for i in z:print(i)new_dic = {k: v ** 2 for k, v in z}         # 字典生成式
new_dic = {k: v ** 2 for k, v in zip(['a', 'b', 'c', 'd'], [1, 2, 3, 4]) }         # 字典生成式,另一种形式

七、生成器和生成器表达式

生成器: 是自定义的迭代器,生成器就是迭代器(自己造出来的)

生成器必须使用yield关键字

7.1 yield关键字

yield的三个特性:

  1. yield可以把 函数 变成生成器(自定制的迭代器对象,具有__iter____next__方法)
  2. yield可以停止函数,再下一次next再次运行yield下面的代码
  3. 有n个yield生成器就有n个元素,就可以next n次, 第n+1次next会报错
# 例子
def func():yield [1,1,23]  # yield会使函数func()变成生成器对象,因此他就具有__iter__方法print(789)      # yield会停止函数,当运行下一次next才会继续运行下面的代码yield 101112    # 一个yield对应一个nextprint(131415)f = func()  # 调用func()函数 会得到生成器对象
for i in f:print(i)

7.2 生成器表达式

生成器表达式就是:把列表推导式的[]换成()

# 生成器表达式就是:把列表表达式的[]换成()
lt = (i for i in range(100))    # 生成器表达式
print(lt)   # 生成器对象
print(lt.__next__())    # 迭代一次迭代器()# 使用for循环迭代生成器对象
for i in lt:    # 因为next方法迭代了一次.就会从1开始print(i)

八、匿名函数

lamdbda 参数 : 逻辑代码

  • 匿名函数使用一次就失效了,一般不单独使用,与max最大值/min最小值/sorted排序/map映射/filter过滤 连用

九、递归函数

递归本质上就是函数调用函数本身,必须得有结束条件,并且在递归的过程中,问题的规模必须都不断缩小

十、内置方法

其实:记住,只要记住一个enumerate()

别的方法,知道什么意思。用到了再去查也可以

十一、面向过程编程

类似于工厂的流水线,机械式的一步一步完成一个项目,把完成步骤具体细分,这样步骤与步骤之间互不干涉

缺点:扩展性差,只要有一个步骤断了,项目就崩溃了
优点:清晰优雅

转载于:https://www.cnblogs.com/XuChengNotes/p/11352423.html

062 函数进阶小结相关推荐

  1. python函数进阶小结_Python-进阶-functools模块小结

    文档 地址 functools.partial 作用: functools.partial 通过包装手法,允许我们 "重新定义" 函数签名 用一些默认参数包装一个可调用对象,返回结 ...

  2. python函数进阶小结_python之函数进阶

    1. 今日内容 1.1 函数的参数 *的魔性用法 函数形参最终顺序 1.2名称空间 全局名称空间,局部名称空间,内置名称空间 取值顺序与加载顺序 作用域 内置函数:globals() locals() ...

  3. python函数进阶小结_python函数的进阶

    形参角度: 万能参数 如果我们在传参数时不很清楚有哪些,或者说给一个函数传了很多实参,考虑用动态参数也叫万能参数. 万能参数,即动态参数,分为两种:动态接收位置参数 *args,动态接收关键字参数** ...

  4. 轩小陌的Python笔记-day11 函数进阶

    day11 函数进阶 目标:掌握函数相关易错点 & 项目开发必备技能. 今日概要: 参数的补充 函数名到底是什么? 返回值和print,傻傻分不清楚. 函数的作用域 1.参数的补充 在函数基础 ...

  5. 【前端系列教程之JavaScript】16_JavaScript函数进阶

    函数进阶 函数回顾 函数的定义方式 函数声明 function foo () {} 函数表达式 var foo = function () {} 函数声明与函数表达式的区别 函数声明必须有名字 函数声 ...

  6. python 函数进阶_Python学习入门基础:一篇文章搞定函数基础、函数进阶

    一.函数基础函数的快速体验 函数的基本使用 函数的参数 函数的返回值 函数的嵌套调用 在模块中定义函数私信小编001即可获取Python学习资料01. 函数的快速体验 1.1 快速体验 所谓函数,就是 ...

  7. 好好学python·函数进阶(递归函数,回调函数,闭包函数,匿名函数,迭代器)

    函数进阶 递归函数 回调函数 闭包函数 特点 匿名函数 lambda 表达式 迭代器 iter() next() 迭代器的取值方案 迭代器取值特点,取一个少一个,直到都取完,最后再获取就会报错 检测迭 ...

  8. 41、Power Query-Text.Combine函数进阶2

    本节继续讲解Power Query-Text.Combine函数进阶. 下面看一个更加有趣的例子. 比如上图,有多列,我们需要求出唯一值,标准有两个,分别是以左边为基准和以右边为基准. 比如以左边为基 ...

  9. 深入理解javascript函数进阶系列第一篇——高阶函数

    前面的话 前面的函数系列中介绍了函数的基础用法.从本文开始,将介绍javascript函数进阶系列,本文将详细介绍高阶函数 定义 高阶函数(higher-order function)指操作函数的函数 ...

  10. python函数-函数进阶

    python函数-函数进阶 一.命名空间和作用域 1.命名空间 内置命名空间 -- python解释器 就是python解释器一启动就可以使用的名字存储在内置命名空间中 内置的名字在启动解释器的时候被 ...

最新文章

  1. python ctypes库5_如何传递一个字符串数组
  2. ARP-Address Resolution Protocol-地址解析协议
  3. 一直接受键盘字符 接收小写字符出输出大写 接受大写输出小写 数字不输出
  4. SCADA之父:物理隔离没什么用
  5. linux wireless子系统,Linux Wireless子系统初始化
  6. 加载Selenium2Library却显示红色
  7. 百度翻译API使用简介
  8. 记一次Windows 无法加载这个硬件的设备驱动程序。驱动程序可能已损坏或不见了。 (代码 39)
  9. Windows下usb接口驱动技术
  10. html化妆品商城设计,基于HTML5的彩妆购物网站设计任务书
  11. nginx ngx_event_t结构体详解
  12. session是什么
  13. 用户生命周期价值及产品运营策略
  14. 【教学类-34-01】拼图(运动项目-长方块拼图)3*4格子(中班主题《个别化拼图》健康偏艺术-美术)
  15. 等额本息还款法贷款利息计算方法及还款计划
  16. vm安装中标麒麟v7.0
  17. CSS 让背景图片全部显示,填满父div
  18. Spring Boot 整合 阿里云短信(模板模式)
  19. 马克思主义哲学-意识观
  20. 计算机故障小知识,计算机故障的一些小知识.doc

热门文章

  1. mysql 索引分析工具,小蚂蚁学习mysql性能优化(3)--SQL以及索引优化--慢查日志分析工具和explain说明...
  2. emc re 整改 超标_两种常见EMC整改流程
  3. java基础总结01-简介
  4. IntelliJ IDEA创建和配置Maven项目并运行
  5. ubuntu 安装php 5.4.9 编译安装
  6. mysql java 日期_Mysql和JAVA中的几个日期操作
  7. 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_09 序列化流_5_InvalidClassException异常_原理...
  8. 51Nod - 1385 凑数字
  9. mui多层tab切换上拉加载的实现
  10. 在MyEclipse显示struts2源码和doc文档及自动完成功能