您现在的位置是:主页 > news > 眉山做网站的公司/100个电商平台

眉山做网站的公司/100个电商平台

admin2025/5/21 20:47:46news

简介眉山做网站的公司,100个电商平台,贵池区城乡与住房建设网站,做个app需要多少费用python中几个比较难懂概念进阶。 迭代器 实现了迭代器协议的容器对象,基于如下两个方法: __next__:返回容器的下一个元素 __iter__:返回迭代器本身由此可见,如果要自定义一个迭代器,需要编写一个具有nex…

眉山做网站的公司,100个电商平台,贵池区城乡与住房建设网站,做个app需要多少费用python中几个比较难懂概念进阶。 迭代器 实现了迭代器协议的容器对象,基于如下两个方法: __next__:返回容器的下一个元素 __iter__:返回迭代器本身由此可见,如果要自定义一个迭代器,需要编写一个具有nex…

python中几个比较难懂概念进阶。

迭代器

实现了迭代器协议的容器对象,基于如下两个方法:

 __next__:返回容器的下一个元素    __iter__:返回迭代器本身

由此可见,如果要自定义一个迭代器,需要编写一个具有next方法的类,只要这个类提供返回迭代器实例的iter特殊方法:

class CountDown(object):def __init__(self, step):self.step = stepdef __next__(self):if self.step <= 0:raise StopIterationself.step -= 1return self.stepdef __iter__(self):return selffor ele in CountDown(4):print(ele)

生成器

被称为特殊的迭代器,是python中协程、异步并发的基础。两个比较重要的方法: send、next,实际上next()和send()在一定意义上作用是相似的,区别是send()可以传递yield表达式的值进去,而next()不能传递特定的值,只能传递None进去。因此,我们可以看做c.next() 和 c.send(None) 作用是一样的。

可参见: https://blog.csdn.net/qq_39521554/article/details/79864889

send既然可以传值变成yield的返回值,因此生成器中的函数可以根据客户端代码改变自身行为,为此还添加了另外两个函数:throw,close,会向生成器抛出错误。

装饰器

说起装饰器,一直局限于就是在一个函数内部定义了一个子函数,然后把子函数返回一种形式。其实任何可调用对象(任何实现了call方法的对象都是可调用的)都可以作为装饰器。

  • 作为一个函数

    def mydecorator(function):def wrapped(*args, **kwargs):# before dosomthingresult = function(*args, **kwargs)# after dosomthingreturn resultreturn wrapped
    
  • 作为一个类

如果装饰器需要复杂的参数化或依赖于特定状态,最好作为一个类来定义。

class DecoratorAsClass:def __init__(self,function):self.function=functiondef __call__(self, *args, **kwargs):# before dosomthingresult = function(*args, **kwargs)# after dosomthingreturn result
  • 参数化装饰器

    def repeat(number=3):"""多次重复执行装饰函数:param number: :return: """def actual_decorator(function):def wrapper(*args, **kwargs):result = Nonefor _ in range(number):result = function(*args, **kwargs)return resultreturn wrapperreturn actual_decorator
    
  • 保存内省的装饰器

乍一看这个名字很玄乎,其实就是一种可以保存被装饰函数元数据的装饰器。使用以上几种装饰器都不会保存函数的元数据(主要是文档字符串和原始函数名)。 解决这个问题主要是借助于functools模块内置的wraps()装饰器:

from functools import wraps def preserving_decorator(function):@wraps(function)def wrapped(*args, **kwargs):"""包装函数内部文档:param args::param kwargs::return:"""return function(*args, **kwargs)return wrapped  @preserving_decorator
def func_with_imported_docstring():pass

用法和有用的示例

参数检查

缓存

代理

上下文提供者

 

 

上下文管理器

主要使用with语句,任何实现了上下文管理器协议的对象都可以用作上下文管理器。该协议包含两个特殊的方法:

  • __enter__(self)
  • __exit__(self,exc_type,exc_value,tracback)

 

 

待续.....................

转载于:https://www.cnblogs.com/tianboblog/p/9682570.html