昨日内容

闭包函数

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

装饰器

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

二层装饰器

装饰器模板

def deco(func):
    def wrapper(*args,**kwargs):
        # 要添加的功能
        res = func(*args,**kwargs)
        return res
    return wrapper

@deco  # index = deco(index)
def index():
    pass

三层装饰器

给二层装饰器传参

今日内容

迭代器

可迭代对象

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

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

迭代器对象

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

只有文件是迭代器气对象

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

for循环原理(迭代循环)

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

三元表达式

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

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

列表推导式

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

字典生成式

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

z = zip([1,2,3,4],[1,2,3,4])

dic = {k**2:v**2 for k,v in z}  # {1:1,2:2,3:3,4:4}

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

生成器

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

def f():
    yield
# 生成器本质是迭代器    

yield关键字

yield的三个特性

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

return的特性

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

递归

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

def f():  # 死递归
    a = 1
    f()
f()   

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

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

count = 0
def a():
    global count
    count += 1
    print(count)
    if count == 100:
        return
    a()
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. 用call或bind实现bind()

    一.bind方法 让我们看一下MDN上对bind方法的解释 bind()方法创建一个新的函数,在bind()被调用时,这个新函数的this被bind的第一个参数指定,其余的参数将作为新函数的参数供调用 ...

  2. Cocos Creator实现左右跳游戏

    ​1. 玩法说明 游戏开始后,点击屏幕左右两侧,机器人朝左上方或右上方跳一步,如果下一步有石块,成功得1分,否则游戏结束. 2. 模块介绍 游戏场景分为2个:主页场景(home).游戏场景(game) ...

  3. Python学习笔记整理总结【Django】:模板语言、分页、Cookie、Session

    一.模板语言  1.在前段展示:对象/字典/元组 class Business(models.Model): # id #用默认的自增id列 即:Business中有3列数据(id, caption, ...

  4. Linux 中文打字软件 gtypist 光标错位解决

    在windows 下有 金山打字和其他的跟打软件,在Linux下找到了 gtypist 为练习中文打字,该软件分为练习模式的速度测试模式,在gtypist-2.9.5版中会出现以下几个问题: 一是在练 ...

  5. 手把手教你Pytest+Allure2.X定制报告详细教程,给自己的项目量身打造一套测试报告-02(非常详细,非常实用)

    简介 前边一篇文章是分享如何搭建pytest+Allure的环境,从而生成一份精美的.让人耳目一新的测试报告,但是有的小伙伴或者童鞋们可能会问,我能不能按照自己的想法为我的项目测试结果量身打造一份属于 ...

  6. Spring MVC-从零开始-view-向页面传递data(ModelAndView与ModelMap的区别)

    1.ModelMap的用法 package com.jt; import org.springframework.stereotype.Controller; import org.springfra ...

  7. 基于C#的机器学习--c# .NET中直观的深度学习

    在本章中,将会学到: l  如何使用Kelp.Net来执行自己的测试 l  如何编写测试 l  如何对函数进行基准测试 Kelp.Net是一个用c#编写的深度学习库.由于能够将函数链到函数堆栈中,它在 ...

  8. Enum枚举的使用实现

    业务中涉及到的状态字段或者简单的选择项的使用. 例如: 1.定义enum枚举类. package com.yjl.enums; import java.util.Objects; public enu ...

  9. 使用VirtualBox虚拟机搭建hadoop运行环境,

    最近学了一下大数据,包括hadoop环境的搭建,搭建工具:centos6.5,hadoop2.6.4,eclipse Mars.1 Release (4.5.1),jdk1.8 第一步.网络与ip地址 ...

  10. 【IE低配杀手】html5shiv.js和respond.min.js

    HTML5现在越来越流行了,但是一遇到IE低版本浏览器就傻眼了,今天整理了一下一些解决办法. html5shiv:解决ie9以下浏览器对html5新增标签的不识别,并导致CSS不起作用的问题. res ...