当前位置: 首页 > news >正文

成都管理咨询公司排名电脑优化软件推荐

成都管理咨询公司排名,电脑优化软件推荐,旅游电子商务网站的建设,红酒网站建设策划书Python迭代器与生成器 1. 迭代器 Iterator 什么是迭代器 迭代器是访问集合元素的一种方式。迭代器是一个可以记住遍历的位置的对象。迭代器可以重复使用#xff0c;而不会像列表那样在迭代时被修改。 迭代器函数iter和next 函数说明iter(iterable)从可迭代对象中返回一个迭…Python迭代器与生成器 1. 迭代器 Iterator 什么是迭代器 迭代器是访问集合元素的一种方式。迭代器是一个可以记住遍历的位置的对象。迭代器可以重复使用而不会像列表那样在迭代时被修改。 迭代器函数iter和next 函数说明iter(iterable)从可迭代对象中返回一个迭代器,iterable必须是能提供一个迭代器的对象next(iterator)从迭代器iterator中获取下一个记录如果无法获取一下条记录则触发 StopIteration 异常迭代器说明 迭代器对象可以使用 next() 函数获取下一个元素。使用 iter() 函数可以从任何可迭代对象中获取迭代器。 迭代器示例 # 示例 可迭代对象 L [1, 2, 3, 4, 5] it iter(L) # 从列表L中获取迭代器 print(next(it)) # 输出 1 print(next(it)) # 输出 2迭代器的用途 迭代器对象能用 next() 函数获取下一个元素这对于大数据集合特别有用因为它不需要在内存中存储所有元素。 迭代器函数iter和next 示例 L [1, 2, 3, 4, 5] it iter(L) for i in it:print(i)2. 生成器 生成器是在程序运行时生成数据与容器不同它通常不会在内存中保留大量的数据而是现用现生成。 yield 是一个关键字用于定义生成器函数生成器函数是一种特殊的函数可以在迭代过程中逐步产生值而不是一次性返回所有结果。跟普通函数不同的是生成器是一个返回迭代器的函数只能用于迭代操作更简单点理解生成器就是一个迭代器。每次使用 yield 语句生产一个值后函数都将暂停执行等待被重新唤醒。yield 语句相比于 return 语句差别就在于 yield 语句返回的是可迭代对象而 return 返回的为不可迭代对象。然后每次调用生成器的 next() 方法或使用 for 循环进行迭代时函数会从上次暂停的地方继续执行直到再次遇到 yield 语句。 生成器函数 含有 yield 语句的函数是生成器函数此函数调用回返回一个生成器对象生成器也是可迭代对象 yield 语句的语法 yield 表达式生成器函数示例1: def simple_generator():yield 1yield 2yield 3 for value in simple_generator():print(value)生成器函数示例2: def Descendorder(n):while n 0:yield nn - 1 # 使用生成器函数 for num in Descendorder(5):print(num)以上实例中Descendorder 函数是一个生成器函数。它使用 yield 语句逐步产生从 n 到 1 的倒序数字。在每次调用 yield 语句时函数会返回当前的倒序数字并在下一次调用时从上次暂停的地方继续执行。 创建生成器对象并使用 next() 函数或 for 循环迭代生成器我们可以逐步获取生成器函数产生的值。在这个例子中我们首先使用 next() 函数获取前两个倒序数字然后通过 for 循环获取剩下的三个倒序数字。 生成器函数的优势是它们可以按需生成值避免一次性生成大量数据并占用大量内存。此外生成器还可以与其他迭代工具如 for 循环无缝配合使用提供简洁和高效的迭代方式。 1. 生成器表达式 语法: ( 表达式 for 变量 in 可迭代对象 [if 真值表达式])作用 用推导式的形式创建一个生成器 示例 (x ** 2 for x in range(1, 5)) # 生成器表达式 generator object genexpr at 0x...for num in (x ** 2 for x in range(1, 5)): ... print(num) ... 1 4 9 162. map(函数可迭代对象) 使用一个函数和一个迭代器中的每个元素作为输入返回一个迭代器其包含函数应用于每个元素的结果。 示例 def square(x):return x ** 2 numbers [1, 2, 3, 4, 5] squared_numbers map(square, numbers) print(list(squared_numbers)) # 输出 [1, 4, 9, 16, 25]3. filter(函数可迭代对象) 使用一个函数和一个可迭代对象作为输入返回一个迭代器它只包含函数返回值为True的元素。 示例 def is_even(x):return x % 2 0 numbers [1, 2, 3, 4, 5, 6] even_numbers filter(is_even, numbers) print(list(even_numbers)) # 输出 [2, 4, 6]4. reduce(函数可迭代对象[, 初始值]) reduce 函数来自 functools 模块它会对迭代器中的元素进行累积操作从左到右依次处理数据最终累计为一个结果值。 示例 from functools import reduce def add(x, y):return x y numbers [1, 2, 3, 4, 5] sum_of_numbers reduce(add, numbers) print(sum_of_numbers) # 输出 152. Python装饰器 Decorators 定义在不修改原始函数代码的情况下为函数添加新的功能。 2.1 装饰器的基本概念 2.1.1 装饰器语法糖 decorator def function():pass等价于 def function():pass function decorator(function)2.1.2 装饰器示例 def uppercase(func):def wrapper():original_result func()modified_result original_result.upper()return modified_resultreturn wrapper uppercase def sayhello():return Hello, Bob print(sayhello()) # 输出 HELLO, BOB2.1.3 带参数的装饰器 def uppercase(func):def wrapper(*args, **kwargs):original_result func(*args, **kwargs)modified_result original_result.upper()return modified_resultreturn wrapper uppercase def sayhello(name):return Hello, name print(sayhello(Bob)) # 输出 HELLO, BOB2.1.4 类装饰器 class MyDecorator:def __init__(self, func):self.func funcdef __call__(self, *args, **kwargs):print(装饰器添加的功能)return self.func(*args, **kwargs) MyDecorator def sayhello(name):return Hello, name print(sayhello(Bob)) # 输出 装饰器添加的功能 然后 Hello, BobMyDecorator 是一个类装饰器。它使用 __init__ 方法接收一个函数并将其存储在实例变量 self.func 中。__call__ 方法使得类的实例可以被当作函数调用在这里可以添加额外的功能并最终调用原始函数。 2.2 装饰器的进阶使用 2.2.1 保留原函数的元信息 当使用装饰器时原始函数的某些元信息如函数名、文档字符串、参数列表等可能会丢失。为了保留这些信息可以使用 functools.wraps 装饰器。 from functools import wraps def uppercase(func):wraps(func)def wrapper(*args, **kwargs):original_result func(*args, **kwargs)modified_result original_result.upper()return modified_resultreturn wrapper uppercase def sayhello(name):返回一个问候语return Hello, name print(sayhello(Bob)) # 输出 HELLO, BOB print(sayhello.__name__) # 输出 sayhello 而不是 wrapper print(sayhello.__doc__) # 输出 返回一个问候语2.2.2 嵌套装饰器 可以同时使用多个装饰器来装饰一个函数装饰器会按照从内到外的顺序执行。 def uppercase(func):wraps(func)def wrapper(*args, **kwargs):original_result func(*args, **kwargs)modified_result original_result.upper()return modified_resultreturn wrapper def exclamation(func):wraps(func)def wrapper(*args, **kwargs):original_result func(*args, **kwargs)modified_result original_result !return modified_resultreturn wrapper uppercase exclamation def sayhello(name):return Hello, name print(sayhello(Bob)) # 输出 HELLO, BOB!在这个例子中sayhello 函数首先被 exclamation 装饰器装饰然后被 uppercase 装饰器装饰。 2.2.3 装饰器参数的传递 如果装饰器本身需要参数那么需要再定义一个函数来接收这些参数然后返回一个装饰器。 def repeat(times):def decorator(func):wraps(func)def wrapper(*args, **kwargs):for _ in range(times):func(*args, **kwargs)return wrapperreturn decorator repeat(times3) def sayhello(name):print(Hello, name) sayhello(Bob) # 输出 Hello, Bob 三次在这个例子中repeat 函数接收一个参数 times然后返回一个装饰器该装饰器会使得被装饰的函数重复执行指定次数。 2.3 总结 Python的装饰器是一个非常强大的功能它允许我们在不修改原始函数代码的情况下增加函数的行为。通过使用装饰器我们可以轻松地实现日志记录、性能测试、事务处理、权限校验等跨多个函数的通用功能。理解和掌握装饰器是Python高级编程的重要一步。
http://www.w-s-a.com/news/913736/

相关文章:

  • 北京 网站建设咨询顾问公司网络公司有几家
  • 设计类网站如何用ps做网站首页
  • 品牌网站建设的关键事项设计网有哪些
  • 网站没收录徐州建设工程审图中心网站
  • 网站建设记账做什么科目erp系统有哪些软件
  • 泰拳图片做网站用哪里有做空包网站的
  • 查外链网站重庆做网站微信的公司
  • 有没有外包活的网站如何做网站快捷键的元素
  • 公司网站赏析网站制作2019趋势
  • 企业进行网站建设的方式有( )推广引流违法吗
  • 按营销型网站要求重做网站 费用点金网站建设
  • 深圳做网站互联网服务
  • 网站sem托管wordpress安装无法连接数据库
  • 深圳网站建设开发公司哪家好微信小程序商家入口
  • 江门站排名优化建立什么网站赚钱
  • 科普文章在那个网站做招聘网站代做
  • 监控设备东莞网站建设游戏网站域名
  • 对商家而言网站建设的好处网址导航怎么彻底删除
  • app设计网站模板企业展厅策划设计公司有哪些
  • wordpress销售主题手机网站关键词优化
  • 怎么查一个网站是什么程序做的三亚城乡建设局网站
  • 深圳分销网站设计公司做网站一般需要多久
  • 企业网站设计代码丹东seo排名公司
  • 企业网站建设定制开发服务网站建设说课ppt
  • 大连市城乡建设局网站网站免费网站入口
  • 做暧网站网站备案ps
  • 知名网站建设公司电话长子网站建设
  • 网站建设的意义与目的建立什么船籍港
  • 广州注册公司营业执照网站建设代码优化
  • 百度网站官网马克互联网主题 wordpress