日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

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

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

一、裝飾器

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

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

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')#這樣不管調用時傳幾個參數(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.多任務

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

三、迭代器

  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---') #結果:---初始化--- func name is test test() #結果:---裝飾器中的功能--- ---test--- 類裝飾器

五、元類

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

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

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

轉載于:https://www.cnblogs.com/peilanluo/p/8284255.html

總結

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

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