iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python生成器怎么使用
  • 271
分享到

Python生成器怎么使用

2023-06-17 02:06:30 271人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

本篇内容介绍了“python生成器怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!生成器仅仅拥有生成某种东西的能力,如果不用__nex

本篇内容介绍了“python生成器怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

生成器

仅仅拥有生成某种东西的能力,如果不用__next__方法是获取不到值得。

创建一个生成器函数

>>>  def scq():... print("11")# 当函数代码块中遇到yield关键字的时候,这个函数就是一个生成器函数... yield  1... print("22")... yield 2... print("33")... yield 3...

把生成器赋值给一个对象

>>> r = scq()

查看r的苏剧类型并且输出r的值

>>> print(type(r),r)<class 'generator'> <generator object scq at 0x000001F117D8DF10>

当执行生成器的__next__的时候,代码会按照顺序去执行,当执行到yield时会返回并提出,yield后面的值就是返回值,然后记录代码执行的位置,并退出

Python生成器怎么使用

Python生成器怎么使用

执行结果

C:python35Python.exe F:/Python_code/sublime/Week5/Day03/s1.py0 1 2 3 4Process finished with exit code 0

迭代器

具有访问生成器的能力,可以访问到生成器的值,类似于生成器的__next__方法,一个一个值一个值得去迭代,只能够按照顺序的去查找。

特点:

  1. 鸿蒙官方战略合作共建——HarmonyOS技术社区

  2. 访问者不需要关心迭代器内部的结构,仅需通过next()方法不断去取下一个内容

  3. 不能随机访问集合中的某个值 ,只能从头到尾依次访问

  4. 访问到一半时不能往回退

  5. 便于循环比较大的数据集合,节省内存

优化上面range或xrange的生成器

def  irange(start, stop, step=1): while start != stop: yield start start +=  step  else:  raise StopIteration for n in irange(1, 10):  """for循环只要遇到StopIteration就会停止"""  print(n)ret = irange(1, 20) print(ret)  # 返回一个生成器,相当于只在内存中创建了一个值 print(list(ret)) # 如果想要得到全部的值,变成列表就可以 /Library/Frameworks/Python.framework/Versions/3.5/bin/python3.5 /Users/ansheng/MyPythonCode/hello.py 1 2 3 4 5 6 7 8 9 <generator object irange at 0x1021df7d8> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]  Process finished with exit code 0

Python之装饰器

Python生成器怎么使用

现要在执行func这个函数前后执行一些操作,就可以创建一个装饰器来实现:

#!/usr/bin/env python # _*_ coding: utf-8 _*_  def decorator(func): # 创建一个装饰器函数,接受的参数arg参数就是func函数名  def inner(*args, **kwargs): print("执行函数之前") ret = func(*args, **kwargs) print("执行函数之后") return ret  return inner  @decorator # 如果要让某个函数使用装饰器,只需要在这个函数上面加上@+装饰器名 def func(arg): print(arg)  func("Hello World!")

输出结果为:

/usr/bin/python3.5 /home/ansheng/Documents/PyCharmProjects/bloGCodes/装饰器.py 执行函数之前 Hello World! 执行函数之后  Process finished with exit code 0

多个装饰器装饰同一个函数

#!/usr/bin/env python # _*_ coding: utf-8 _*_  def decorator1(func): def inner(): print("开始之前执行装饰器01") ret = func() print("结束之后执行装饰器01") return ret  return inner   def decorator2(func): def inner(): print("decorator2>>>Start...") ret = func() print("decorator2>>>End...") return ret  return inner   @decorator1 @decorator2 def index(): print("执行函数...")  index()

输出结果:

/usr/bin/python3.5 /home/ansheng/Documents/PycharmProjects/blogcodes/装饰器.py 开始之前执行装饰器01 decorator2>>>Start... 执行函数... decorator2>>>End... 结束之后执行装饰器01  Process finished with exit code 0

更多实例

  1. #!/usr/bin/env python 

  2. # _*_ coding:utf-8 _*_ 

  3.  

  4. # Created by 安生 on 2017/2/9 

  5.  

  6. """ 

  7. 函数装饰器 

  8. """  

  9.  

  10. def decorator(func): 

  11. def wrapped(*args, **kwargs): 

  12. return func(*args, **kwargs) 

  13.  

  14. return wrapped  

  15.  

  16. @decorator 

  17. def func(a, b): 

  18. return a + b  

  19.  

  20. print(func(1, 2)) 

  21. """ 

  22. 类装饰器 

  23. """  

  24.  

  25. class decorator: 

  26. def __init__(self, func): 

  27. self.func = func 

  28.  

  29. def __call__(self, *args, **kwargs): 

  30. return self.func(*args, **kwargs)  

  31.  

  32. @decorator 

  33. def func(a, b): 

  34. return a + b  

  35.  

  36. print(func(1, 2)) 

  37. """ 

  38. 带参数的函数装饰器 

  39. """  

  40.  

  41. def parameter(a, b): 

  42. print(a, b) 

  43.  

  44. def decorator(func): 

  45. def wrapped(*args, **kwargs): 

  46. return func(*args, **kwargs) 

  47.  

  48. return wrapped  

  49. return decorator  

  50.  

  51. @parameter(1, 2) 

  52. def func(a, b): 

  53. return a + b 

  54.  

  55.  

  56. print(func(10, 20)) 

  57. """ 

  58. 带参数的类装饰器 

  59. """  

  60.  

  61. def parameter(a, b): 

  62. print(a + b) 

  63.  

  64. class decorator: 

  65. def __init__(self, func): 

  66. self.func = func 

  67.  

  68. def __call__(self, *args, **kwargs): 

  69. return self.func(*args, **kwargs) 

  70.  

  71. return decorator  

  72.  

  73. @parameter(1, 2) 

  74. def func(a, b): 

  75. return a + b  

  76.  

  77. print(func(10, 20)) 

  78.  

  79. """ 

  80. 带参数的类装饰器 

  81. """ 

  82.  

  83.  

  84. def parameter(a, b): 

  85. print(a, b) 

  86.  

  87. def decorator(cls): 

  88. class wrapped: 

  89. def __init__(self, *args, **kwargs): 

  90. self.cls = cls(*args, **kwargs) 

  91.  

  92. def __getattr__(self, item): 

  93. return getattr(self.cls, item) 

  94.  

  95. return wrapped 

  96.  

  97. return decorator  

  98.  

  99. @parameter(1, 2) 

  100. class CLS: 

  101. def __init__(self): 

  102. self.a = 'a' 

  103.  

  104. def P(self, v): 

  105. print(v) 

  106.  

  107.  

  108. obj = CLS() 

  109. print(obj.a) 

  110. obj.P('Hello,') 

  111.  

  112. """ 

  113. 为函数中和类中的方法添加装饰器 

  114. """  

  115.  

  116. def Call(aClass): 

  117. calls = 0 

  118.  

  119. def onCall(*args, **kwargs): 

  120. nonlocal calls 

  121. calls += 1 

  122. print('call %s to %s' % (calls, func.__name__)) 

  123. return aClass(*args, **kwargs) 

  124.  

  125. return onCall  

  126.  

  127. @Call 

  128. def func(a, b): 

  129. return a + b  

  130.  

  131. print(func(1, 2))  

  132.  

  133. class CLS: 

  134. def __init__(self): 

  135. self.a = 'a' 

  136.  

  137. @Call 

  138. def b(self): 

  139. return self.a  

  140.  

  141. obj = CLS() 

  142. print(obj.b()) 
     

“Python生成器怎么使用”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: Python生成器怎么使用

本文链接: https://www.lsjlt.com/news/286833.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python生成器怎么使用
    本篇内容介绍了“Python生成器怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!生成器仅仅拥有生成某种东西的能力,如果不用__nex...
    99+
    2023-06-17
  • Python生成器yield怎么使用
    这篇“Python生成器yield怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Python生成器yield怎么使用...
    99+
    2023-07-02
  • python列表生成器怎么使用
    本篇内容介绍了“python列表生成器怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!列表生成式基础语法[exp for iter_v...
    99+
    2023-07-02
  • python怎么使用send启动生成器
    小编给大家分享一下python怎么使用send启动生成器,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1、说明send方法启动生成器的时候可以传参数。如果第一次启...
    99+
    2023-06-15
  • Python异步之生成器怎么使用
    这篇文章主要介绍“Python异步之生成器怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python异步之生成器怎么使用”文章能帮助大家解决问题。正文生成器是 Python 的基本组成部分。...
    99+
    2023-07-05
  • python生成器怎么定义和使用
    本文小编为大家详细介绍“python生成器怎么定义和使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“python生成器怎么定义和使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。1. 生成器概念生成器(英文:...
    99+
    2023-07-02
  • Python中迭代器与生成器怎么使用
    一、迭代器(foreach)1、可迭代的对象内置有__iter__方法的都叫可迭代的对象。Python内置str、list、tuple、dict、set、file都是可迭代对象。x = 1.__iter__ # SyntaxError: ...
    99+
    2023-05-22
    Python
  • python生成器如何使用
    这篇文章主要介绍“python生成器如何使用”,在日常操作中,相信很多人在python生成器如何使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”python生成器如何使用”...
    99+
    2024-04-02
  • python怎么使用openai生成图像
    这篇文章主要介绍“python怎么使用openai生成图像”,在日常操作中,相信很多人在python怎么使用openai生成图像问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”python怎么使用openai生...
    99+
    2023-07-05
  • python使用生成器的方法
    这篇文章主要介绍了python使用生成器的方法的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇python使用生成器的方法文章都会有所收获,下面我们一起来看看吧。尽可能使用生成器单机处理较大数据量时,生成器往往很...
    99+
    2023-06-27
  • 使用python怎么创建一个递增生成器
    本篇文章为大家展示了使用python怎么创建一个递增生成器,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。python主要应用领域有哪些1、云计算,典型应用OpenStack。2、WEB前端开发,众多...
    99+
    2023-06-14
  • Python生成器和协程怎么用
    本篇内容主要讲解“Python生成器和协程怎么用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python生成器和协程怎么用”吧!认识生成器你将如何生成任意长度...
    99+
    2024-04-02
  • Python生成器与迭代器怎么用
    这篇文章给大家分享的是有关Python生成器与迭代器怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1、生成器现在可以通过生成器来直接创建一个列表,但是由于内存的限制,列表的容量肯定是有限的,如果我们需要一个...
    99+
    2023-06-25
  • python中的生成器、迭代器、装饰器怎么使用
    本篇内容介绍了“python中的生成器、迭代器、装饰器怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、装饰器由于一个函数能实现一种...
    99+
    2023-07-02
  • node.js中slug生成器怎么使用
    这篇文章主要介绍“node.js中slug生成器怎么使用”,在日常操作中,相信很多人在node.js中slug生成器怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”node.js中slug生成器怎么使用...
    99+
    2023-06-17
  • 怎么使用Python点云生成3D网格
    1、介绍点云是具有 3 轴坐标(x, y, z)的点的集合。这种类型的集合可以来自不同的来源并以不同的格式保存。可以使用称为表面重建算法的不同算法将点云转换为 3D 网格。为了执行表面重建,本指南使用PyVista,这是一个易于使用的库来处...
    99+
    2023-05-14
    Python
  • 怎么使用Python+ChatGPT批量生成论文
    这篇文章主要介绍了怎么使用Python+ChatGPT批量生成论文的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么使用Python+ChatGPT批量生成论文文章都会有所收获,下面我们一起来看看吧。用Pyth...
    99+
    2023-07-05
  • 怎么使用python字典生成树状图
    这篇文章主要介绍了怎么使用python字典生成树状图的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么使用python字典生成树状图文章都会有所收获,下面我们一起来看看吧。python字典生成树状图from&n...
    99+
    2023-07-02
  • 使用python怎么实现生成器与文件系统
    使用python怎么实现生成器与文件系统?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一、生成器首先解释迭代器。能以一种一致的方式对序列进行迭代(比如列表中的对象或文件中的行)...
    99+
    2023-06-15
  • Python浅析生成器generator的使用
    目录一、创建生成器1.创建生成器的方式12.创建生成器的方式2二、遍历生成器的方式三、总结一、创建生成器 通过列表⽣成式,我们可以直接创建⼀个列表。 但是,受到内存限制,列表容量肯定...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作