函数进阶(二) day13
目录
昨日内容
闭包函数
把函数和变量包到另一个函数里面
装饰器
- 本质是函数,给函数添加功能
- 不改变被装饰函数的源代码
- 不改变被装饰函数的调用方法
二层装饰器
装饰器模板
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的三个特性
- yield会暂停函数,当运行下一次next时才会继续运行下面的代码
- 通过next取值
return的特性
- 终止函数
- 通过调用函数拿到值
递归
函数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的更多相关文章
- Python编程-函数进阶二
一.生成器补充 1.什么是生成器? 可以理解为一种数据类型,这种数据类型自动实现了迭代器协议(其他的数据类型需要调用自己内置的__iter__方法),所以生成器就是可迭代对象. 2.生成器分类 (1) ...
- mysql进阶(二十九)常用函数
mysql进阶(二十九)常用函数 一.数学函数 ABS(x) 返回x的绝对值 BIN(x) 返回x的二进制(OCT返回八进制,HEX返回十六进制) CEILING(x) 返回大于x的最小整数值 EXP ...
- Python进阶(二)----函数参数,作用域
Python进阶(二)----函数参数,作用域 一丶形参角度:*args,动态位置传参,**kwargs,动态关键字传参 *args: 动态位置参数. 在函数定义时, * 将实参角度的位置参数聚合 ...
- mysql进阶(二十八)MySQL GRANT REVOKE用法
mysql进阶(二十八)MySQL GRANT REVOKE用法 MySQL的权限系统围绕着两个概念: 认证->确定用户是否允许连接数据库服务器: 授权->确定用户是否拥有足够的权限执 ...
- Android进阶(二十八)上下文菜单ContextMenu使用案例
上下文菜单ContextMenu使用案例 前言 回顾之前的应用程序,发现之前创建的选项菜单无法显示了.按照正常逻辑来说,左图中在"商品信息"一栏中应该存在选项菜单,用户可进行分享等 ...
- 【转】Python之函数进阶
[转]Python之函数进阶 本节内容 上一篇中介绍了Python中函数的定义.函数的调用.函数的参数以及变量的作用域等内容,现在来说下函数的一些高级特性: 递归函数 嵌套函数与闭包 匿名函数 高阶函 ...
- 《Python》 函数进阶和名称空间作用域
函数进阶: 一.动态参数:*args **kwargs *args是元祖形式,接收除去键值对以外的所有参数 # args可以换成任意变量名,约定俗成用args **kwargs接收的只是键值对的参数 ...
- 巨蟒python全栈开发-第10天 函数进阶
一.今日主要内容总览(重点) 1.动态传参(重点) *,** *: 形参:聚合 位置参数*=>元组 关键字**=>字典 实参:打散 列表,字符串,元组=>* 字典=>** 形参 ...
- 10.Python初窥门径(函数进阶)
Python(函数进阶) 一.函数的传参(接上期) 形参角度(一共四种,后两种) 动态参数(万能参数)* # 定义一个函数时,*所有的位置参数聚合到一个元组中 def func(*args): # * ...
随机推荐
- Spring MVC-从零开始-@RequestMapping结合@RequestParam (从HTTP键值对中取值,作用于函数参数)
1.@RequestParam 注解使用的时候可以有一个值,也可以没有值:如果请求参数和处理方法参数的名称一样的话,@RequestParam 注解的 value 这个参数就可省掉了:@Request ...
- Spring 梳理-容器(container)
虽然Spring的组件代码是轻量级的,但它的配置却是重量级的.一开始,Spring用XML配置,而且是很多XML配置.Spring 2.5引入了基于注解的组件扫描,这消除了大量针对应用程序自身组件的显 ...
- 阿里云服务器ecs配置之安装jdk
一.安装环境 操作系统:Centos 7.4 JDK版本:1.8 工具:Xshell5.Xftp5 二.安装步骤 第一步:下载安装包 (官网)链接: 下载适合自己系统的jdk版本,如图:我下载的是64 ...
- JavaScript是如何工作的:事件循环和异步编程的崛起+ 5种使用 async/await 更好地编码方式!
为什么单线程是一个限制? 在发布的第一篇文章中,思考了这样一个问题:当调用堆栈中有函数调用需要花费大量时间来处理时会发生什么? 例如,假设在浏览器中运行一个复杂的图像转换算法. 当调用堆栈有函数要执行 ...
- 从零开始入门 K8s | 应用存储和持久化数据卷:核心知识
作者 | 至天 阿里巴巴高级研发工程师 一.Volumes 介绍 Pod Volumes 首先来看一下 Pod Volumes 的使用场景: 场景一:如果 pod 中的某一个容器在运行时异常退出,被 ...
- Zookeeper 学习笔记之 Leader Election
ZooKeeper四种节点类型: Persist Persist_Sequential Ephemeral Ephemeral_Sequential 在节点上可注册的Watch,客户端先得到通知再得到 ...
- Scala 学习笔记之集合(8) Try和Future
import util._ import concurrent.ExecutionContext.Implicits.global import concurrent.Future import co ...
- 初识TDD
什么是 TDD ? TDD 有广义和狭义的区分. 广义角度指的是 ATDD(Acceptance Test Driven Development),包括 BDD(Behavior Driven Tes ...
- .NET进阶篇-语言章-2-Delegate委托、Event事件
知识只有经过整理才能形成技能 整个章节分布简介请查看第一篇 内容目录 一.概述 二.解析委托知识点 1.委托本质 2.委托的使用 3.委托意义 逻辑解耦,减少重复代码 代码封装支持扩展 匿名方法和La ...
- EF Core设置字段默认时间
---恢复内容开始--- 在EF的官方文档上只提到了用 Fluent API来设置默认值. 但是我们日常开发中,会把公用字段都写成基类.比如行创建时间 在需要默认时间的字段加上一个特性 [Databa ...