日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python--装饰器、生成器、迭代器、元类

發(fā)布時間:2023/12/1 python 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python--装饰器、生成器、迭代器、元类 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、裝飾器

def w1(func):def inner():func()return inner@w1 def f1():print('1111111')

1.只要python解釋器執(zhí)行到裝飾器,就會自動進(jìn)行裝飾,而不是等到調(diào)用的時候才進(jìn)行裝飾。

2.有參數(shù)的函數(shù),裝飾器定義方法

def w1(func):def inner(*args, **kwargs):func()return inner@w1 def test1(a, b, c):print('1111')@w1 def test2(a, b, c, d):print('2222')#這樣不管調(diào)用時傳幾個參數(shù),都可以靈活使用,無需修改裝飾器的形參

3.對函數(shù)中有返回值,裝飾器定義的方法

def w1(func):def inner():return func()return inner@w1 test1():return ('1111')res = test1() print(res)

4.通用裝飾器 ?

def w1(func):def inner(*args, **kwargs):return func()return inner@w1 def test1():return ('1111')

5.數(shù)的裝飾器

def func_arg(arg):def inner_func(func)def inner():func()return innerreturn func@func_art('1111') def class():print('1111')test()

帶有參數(shù)的裝飾器能夠起到在運行時,有不同的功能

二、生成器

  1.生成器的定義

# 第一種方式 a = (x for x in range(10))# 第二種方式 def func():a,b = 0,1for i in range(10):yield ba,b = b,a+b 生成器的定義

  2.生成器賦值問題

def test():i = 0while i<5:temp = yield iprint(temp)i +=1t = test() t.__next__() #一種迭代方式 next(t) #第二種迭代方式 #在遍歷過程中發(fā)現(xiàn)temp的值是None,即生成器未能給temp賦值,要解決這個問題可以用一下辦法 t.send('111') #在迭代的同時可以給temp賦值 生成器賦值問題

  3.多任務(wù)

def test1():while True:print('11111')yield Nonedef test2():while True:print('22222')yield Nonet1 = test1() t2 = test2()while True:t1.__next__()t2.__next__() 多任務(wù)

三、迭代器

  1.判斷是否可以迭代

from collections import Iterableisinstance(要判斷的變量,Iterable) 判斷是否可以迭代

  2.迭代器的定義

a = [11, 22, 33, 44]b = iter(a) 迭代器的定義

?四、類裝飾器

  1.類裝飾器的核心在于__call__方法見下例

class Test(object):def __init__(self, func):print('---初始化---')print('func name is %s'%func.__name__)self.__func = funcdef __call__(self):print('---裝飾器中的功能---')self.__func()@Test def test():print('---test---') #結(jié)果:---初始化--- func name is test test() #結(jié)果:---裝飾器中的功能--- ---test--- 類裝飾器

五、元類

  1.用type創(chuàng)建類:type(類名, 由父類名稱組成的元組(針對繼承的情況,可以為空),包含屬性的字典(名稱和值)),定義方法可以先定義一個函數(shù),然后把 函數(shù)的引用存在字典里

  2.__metaclass__屬性:在類中添加該屬性 __metaclass__ = xxx(python2) ?決定了該類是有什么創(chuàng)建的

    python3中用法:class Test(object, metaclass=xxx):

轉(zhuǎn)載于:https://www.cnblogs.com/peilanluo/p/8284255.html

總結(jié)

以上是生活随笔為你收集整理的python--装饰器、生成器、迭代器、元类的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。