昨日内容

闭包函数

把函数和变量包到另一个函数里面

装饰器

  1. 本质是函数,给函数添加功能
  2. 不改变被装饰函数的源代码
  3. 不改变被装饰函数的调用方法

二层装饰器

装饰器模板

  1. def deco(func):
  2. def wrapper(*args,**kwargs):
  3. # 要添加的功能
  4. res = func(*args,**kwargs)
  5. return res
  6. return wrapper
  7. @deco # index = deco(index)
  8. def index():
  9. pass

三层装饰器

给二层装饰器传参

今日内容

迭代器

可迭代对象

含有__iter__方法就叫做可迭代对象

除了数字类型,所有数据类型都是很可迭代对象

迭代器对象

含有__iter____next__方法的就是迭代器对象

只有文件是迭代器气对象

提供了不依赖索引取值的手段(迭代器的作用)

for循环原理(迭代循环)

  1. dic = {'a':1,'b':2,'c':3}
  2. dic_iter = dic.__iter__()
  3. while True:
  4. try:
  5. print(dic_iter.__next__())
  6. except StopIteration as e:
  7. break

三元表达式

print(x)if x > y else print(y)

三元表达式只支持双分支结构

列表推导式

  1. lt = [i**2 for i in range(4)] # 0,2,4,9
  2. lt = [i**2 for i in [1,2,3,4]]

字典生成式

  1. dic = {'a':1, 'b':2}
  2. dic1 = {i for i in dic} # {'a','b'}
  3. dic2 = {k*2:v**2 for k,v in dic.items()} # {'aa':2, 'bb':4}
  4. z = zip([1,2,3,4],[1,2,3,4])
  5. dic = {k**2:v**2 for k,v in z} # {1:1,2:2,3:3,4:4}

字典表达式一般与zip(拉链函数)列表里面包了元组连用

生成器

含有yield关键字的函数叫做生成器

  1. def f():
  2. yield
  3. # 生成器本质是迭代器

yield关键字

yield的三个特性

  1. yield会暂停函数,当运行下一次next时才会继续运行下面的代码
  2. 通过next取值

return的特性

  1. 终止函数
  2. 通过调用函数拿到值

递归

函数f内部直接或间接调用函数a本身

  1. def f(): # 死递归
  2. a = 1
  3. f()
  4. f()

每一次递归不会结束函数,并且每一次递归都会开辟新内存空间

真正的递归必须要有退出条件

  1. count = 0
  2. def a():
  3. global count
  4. count += 1
  5. print(count)
  6. if count == 100:
  7. return
  8. a()
  9. a()

函数进阶(二) day13的更多相关文章

  1. Python编程-函数进阶二

    一.生成器补充 1.什么是生成器? 可以理解为一种数据类型,这种数据类型自动实现了迭代器协议(其他的数据类型需要调用自己内置的__iter__方法),所以生成器就是可迭代对象. 2.生成器分类 (1) ...

  2. mysql进阶(二十九)常用函数

    mysql进阶(二十九)常用函数 一.数学函数 ABS(x) 返回x的绝对值 BIN(x) 返回x的二进制(OCT返回八进制,HEX返回十六进制) CEILING(x) 返回大于x的最小整数值 EXP ...

  3. Python进阶(二)----函数参数,作用域

    Python进阶(二)----函数参数,作用域 一丶形参角度:*args,动态位置传参,**kwargs,动态关键字传参 *args: ​ 动态位置参数. 在函数定义时, * 将实参角度的位置参数聚合 ...

  4. mysql进阶(二十八)MySQL GRANT REVOKE用法

    mysql进阶(二十八)MySQL GRANT REVOKE用法   MySQL的权限系统围绕着两个概念: 认证->确定用户是否允许连接数据库服务器: 授权->确定用户是否拥有足够的权限执 ...

  5. Android进阶(二十八)上下文菜单ContextMenu使用案例

    上下文菜单ContextMenu使用案例 前言 回顾之前的应用程序,发现之前创建的选项菜单无法显示了.按照正常逻辑来说,左图中在"商品信息"一栏中应该存在选项菜单,用户可进行分享等 ...

  6. 【转】Python之函数进阶

    [转]Python之函数进阶 本节内容 上一篇中介绍了Python中函数的定义.函数的调用.函数的参数以及变量的作用域等内容,现在来说下函数的一些高级特性: 递归函数 嵌套函数与闭包 匿名函数 高阶函 ...

  7. 《Python》 函数进阶和名称空间作用域

    函数进阶: 一.动态参数:*args  **kwargs *args是元祖形式,接收除去键值对以外的所有参数 # args可以换成任意变量名,约定俗成用args **kwargs接收的只是键值对的参数 ...

  8. 巨蟒python全栈开发-第10天 函数进阶

    一.今日主要内容总览(重点) 1.动态传参(重点) *,** *: 形参:聚合 位置参数*=>元组 关键字**=>字典 实参:打散 列表,字符串,元组=>* 字典=>** 形参 ...

  9. 10.Python初窥门径(函数进阶)

    Python(函数进阶) 一.函数的传参(接上期) 形参角度(一共四种,后两种) 动态参数(万能参数)* # 定义一个函数时,*所有的位置参数聚合到一个元组中 def func(*args): # * ...

随机推荐

  1. 浏览器兼容性知识&测试计划&测试报告

    浏览器兼容性知识&测试计划&测试报告 浏览器兼容性问题:网页或网站兼容性问题,因为不同浏览器使用内核及所支持的HTML(标准通用标记语言下的一个应用)等网页语言标准不同:以及用户客户端 ...

  2. C#之WPF连接sqllite数据库

    using System; using System.Collections.Generic; using System.Data; using System.Data.SQLite; namespa ...

  3. js数组的增删改查

    array 数组的增删改: push 从数组后面推入一个元素或多个元素 var arr = [1,2,3]; ​ // 返回:修改后数组的长度 arr.push(4,5,6); pop 删除数组最后一 ...

  4. Disruptor—核心概念及体验

    本文基于最新的3.4.2的版本文档进行翻译,翻译自: https://github.com/LMAX-Exchange/disruptor/wiki/Introduction https://gith ...

  5. LeetCode正则表达式匹配

    题目描述 给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 '.' 和 '*' 的正则表达式匹配. '.' 匹配任意单个字符 '*' 匹配零个或多个前面的那一个元素 所谓匹配,是要涵盖 整个 ...

  6. php导出excel乱码怎么处理

    使用PHP导出excel文档,有时候莫名其妙就会出现导出的数据乱码,现在推荐一个万能修补大法 话不多说,直接上代码 核心就是在处理完数据之后,输出excel文件之前 添加 ob_end_clean() ...

  7. 色即是空,空即是色---java有关null的几件小事

    故事背景 ---摩诃般若波罗蜜多心经: 观自在菩萨,行深般若波罗蜜多时,照见五蕴皆空,度一切苦厄.舍利子,色不异空,空不异色:色即是空,空即是色.受想行识,亦复如是.舍利子,是诸法空相,不生不灭,不垢 ...

  8. Nullable Reference Types 可空引用类型

    在写C#代码的时候,你可能经常会遇到这个错误: 但如果想避免NullReferenceException的发生,确实需要做很多麻烦的工作. 可空引用类型 Null Reference Type 所以, ...

  9. Spring Boot2 系列教程(十)Spring Boot 整合 Freemarker

    今天来聊聊 Spring Boot 整合 Freemarker. Freemarker 简介 这是一个相当老牌的开源的免费的模版引擎.通过 Freemarker 模版,我们可以将数据渲染成 HTML ...

  10. tesseract 测试样例

    该图片的链接为https://raw.githubusercontent.com/Python3WebSpider/TestTess/master/image.png,可以直接保存或下载. 首先用命令 ...