python怎么接外活_Python三大活器
1.迭代器
可迭代的:能够被for循环都是可迭代的,诸如:列表、元组、集合、字典、字符串等
from collections import Iterable
l = [1, 2, 3, 4]
t = (1, 2, 3, 4)
d = {1: 2, 3: 4}
s = {1, 2, 3, 4}
print(isinstance(l, Iterable))
print(isinstance(t, Iterable))
print(isinstance(d, Iterable))
print(isinstance(s, Iterable))
// 输出结果:
True
True
True
True
可迭代协议:内部实现了__iter__方法
print("__iter__" in dir(l))
print("__iter__" in dir(t))
print("__iter__" in dir(d))
print("__iter__" in dir(s))
// 输出结果:
True
True
True
True
迭代器:是访问集合的一种方法,拥有_inter_和_next_方法
a = iter(l) # iter()方法生成迭代器,参数必须是可迭代对象;iter()方法等同"__iter__()"
print(a)
while true:
try:
print(next(a)) # next()方法对迭代器取值,等同于"__next__()"
except StopInteration:
break
// 输出结果:
# 列表迭代器内存地址
1
2
3
4
特点:
1.访问者不需要关心迭代器内部结构,仅需要通过next()方法不断去取下一个内容
2.不能够随机访问集合中的某个值,只能够从头到尾依次访问且不能回退
3.便于循环比较大的数据集合,节省内存
总结:能够被for循环肯定是可迭代对象,但不一定是迭代器
备注:关于for循环是基于迭代器协议的一种遍历方法,先调用可迭代对象的iter()方法将其转化成迭代器,然后使用迭代器协议去实现循环访问
2.生成器
本质:迭代器
定义:一个函数调用时返回一个迭代器,那这个函数就是生成器;如果该函数中包含yield语法,则这个函数会成为生成器函数
生成器函数:一个包含yield语法的函数,yield可以从函数中返回值,不同return(程序结束),调用生成器函数会得到可迭代的对象,每一次获取这个可迭代对象的值,就能推动函数的执行,获取新的返回值,直到函数结束(关于send()方法相同并传递给上一个yield)
列表推导式:list1=['学生%s' %i for i in range(10)]
生成器表达式:list1=('学生%s' %i for i in range(10)])
1.把列表解析的[]换成()得到的就是生成器表达式
2.列表解析与生成器表达式都是一种便利的编程方式,只不过生成器表达式更节省内存
3.装饰器
本质:一个闭包函数
功能:在不改变原函数的调用情况下对原函数功能进行扩展
闭包:在一个外函数中定义一个内函数,内函数引用外函数的临时变量,并且外函数的返回值是内函数
闭包函数:内部函数对外部作用域而非全局作用域的引用,该内部函数称之为闭包函数
闭包好处:可以读取函数内部的变量,这些变量的值始终保持在内存中,不会因为外函数调用后回收
装饰器格式:
from functools import wraps
def decorator(func):
@wraps(func) # 帮助查看函数信息的方法
def inner(*args,**kargs):
print("before...")
res = func(*args,**kargs)
print("after...")
return res
returen inner
def sum(a,b):
return a+b
# 使用语法糖:
@decorator ==> sum = decorator(sum) = inner
res_sum = sum(1,2) ==> res_sum = inner(1,2)
多个装饰器:
def wrapper1(func):
def inner():
print('wrapper1 ,before func')
func()
print('wrapper1 ,after func')
return inner
def wrapper2(func):
def inner():
print('wrapper2 ,before func')
func()
print('wrapper2 ,after func')
return inner
@wrapper2
@wrapper1
def f():
print('in f')
f()
// 输出结果:按语法糖顺序优先执行before内容,再去执行after内容
wrapper2 ,before func
wrapper1 ,before func
in f
wrapper1 ,after func
wrapper2 ,after fun
python怎么接外活_Python三大活器相关推荐
- python设置mysql外键_python基础教程之MySQL数据库之-foreign key 外键(一
今日重点:外键 一对多 多对多 一对一 -------------------------------------------------------------------------------- ...
- python爬虫40个项目_python三个爬虫项目代码实例
本篇文章小编给大家分享一下python三个爬虫项目代码实例,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. 爬取内涵段子: #encoding=utf-8 import ur ...
- python比较两个二进制文件_python三种方法判断文件是否为二进制文件
两种方法判断文件是否为二进制文件,最准确的就是把这两种方法结合起来. (1)方法一: 它首先检查文件是否以BOM开始,如果不在初始8192字节内查找零字节: import codecs file_pa ...
- python中的json函数_python中装饰器、内置函数、json的详解
装饰器 装饰器本质上是一个Python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象. 先看简单例子: def run(): time.sleep(1 ...
- python闭包函数使用教程_Python闭包装饰器使用方法汇总
闭包内容: 匿名函数:能够完成简单的功能,传递这个函数的引用,只有功能 普通函数:能够完成复杂的功能,传递这个函数的引用,只有功能 闭包:能够完成较为复杂的功能,传递这个闭包中的函数以及数据,因此传递 ...
- python编程模式是什么_python 开发的三种运行模式详细介绍
Python 三种运行模式 Python作为一门脚本语言,使用的范围很广.有的同学用来算法开发,有的用来验证逻辑,还有的作为胶水语言,用它来粘合整个系统的流程.不管怎么说,怎么使用python既取决于 ...
- python三大器_Python - 三大器 迭代器,生层器,装饰器
Python - 三大器 迭代器,生层器,装饰器 在介绍三大器之前先来了解一下容器和可迭代对象... 一. 容器 容器是一种把多个元素组织在一起的数据结构,容器中的元素可以逐个地迭代获取,可以用in, ...
- 以下()不是python的数值运算操作符_Python学习(三)——Python的运算符和数值、字符的类中方法...
Python开发IDE PyCharm,eclipse PyCharm的基础用法 全部选中后 Ctrl+?全部变为注释 运算符 结果为值的运算符 算术运算符: + - * / % // ** 赋值运算 ...
- python输入一个三位数_Python 三位一并法
这两天帮同学解了一些题目,这里总结一下算法. 0x00 题目 请写一个 Python 程序实现实数的「三位一并法」与「四位一并法」.输入一个八进制小数,利用三位一并法将其转换为二进制实数,并输出,再利 ...
最新文章
- pymysq向mysql写数据 为什么本地无法查看_从运维角度浅谈MySQL数据库优化,中小企业DBA必会...
- SLS:海量日志数据管理利器
- 160个Crackme032用ProcessMonitor拆解KeyFile保护
- kepler架构GPU新特性--HyperQ
- 合肥.NET俱乐部第二期技术沙龙活动预告
- ssm使用全注解实现增删改查案例——web.xml
- java 冒泡排序的三种写法_冒泡排序的三种实现(Java)
- Git使用-.gitignore文件(使一些文件不上传到git)
- fast软件_ChinaSoft 2020论坛巡礼 : 系统软件安全技术论坛
- 缓存框架 EhCache 使用 2
- 基于java+ssm的企业员工考勤系统
- 系统分析与设计 HW9
- 使用Vendor NDK实现Android Camera preview
- 基于XQ6657Z35-EVM开发平台上TI TMS320C6657 TLV320AIC3206音频设计
- 转--各种文件后缀名与打开方式大全
- 很有意思的几个考验知识广度的问题
- 2020计算机考试内容,2020年全国计算机二级OFFICE考试内容
- Python-数据类型考试题分析
- 微信小程序——推荐简洁和高可用性的插件WxP UI
- word中如何在方框中打钩
热门文章
- SAP CRM WebClient UI如何将后台存储的timestamp时间戳转换成本地时间
- SAP云平台API portal里的discover all功能
- SAP CRM中间件调试的一些重要方法
- SAP gateway currency transformation from string to ABAP format - deserialization
- SAP WebIDE destination的 discovery工作机制 -下拉菜单项是如何被填充的
- ABAP作为一门编程语言,是否过时了呢?
- SAP Cloud for Customer里Sales Order和Sales Quote的建模方式
- 如何从S4HANA的销售订单找到对应的生产订单
- highroller赌城java下载,非常有用的链接
- dockerhub 拉取地址_DockerHub 镜像仓库的使用详解