裝飾器,生成器,迭代器

2021-08-10 07:51:23 字數 2542 閱讀 8583

#裝飾器

# import time

# def show_time(func):

# def inner(*x):

# start_time = time.time()

# func(*x)

# end_time = time.time()

# print(end_time-start_time)

# return inner

# @show_time

# def add(*x):

# sum = 0

# for i in x:

# sum+=i

# time.sleep(1)

# print(sum)

# add(7, 8, 9)

#列表生成

# t = ('123', 8, [1, 2, 3])

# d =

# def f(n):

# n = n**3

# return n

# list_builder = [x for x in range(10)]#[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

# list_builder2 = [x*2 for x in range(10)]#[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

# list_builder3 = [f(x) for x in range(10)]#[0, 1, 8, 27, 64, 125, 216, 343, 512, 729]

# list_builder4 = [x for x in t]#['123', 8, [1, 2, 3]]

# list_builder5 = [x for x in d]#['age', 'leo']

# print(list_builder)

# print(list_builder2)

# print(list_builder3)

# print(list_builder4)

# print(list_builder5)

#生成器

#a = (x for x in range(5))

#print(a)#at 0x0120bb10>

# print(next(a)) #等價於a.__next__()

# #print(a.__next__())

# print(next(a))

# print(next(a))

# for i in a:

# if i ==2:

# print(i)

# continue

# def fibo(max):

# n, before, after = 0, 0, 1

# while n < max:

# #print(before)

# yield before

# before, after = after, before+after

# n = n+1

## g = fibo(10)

# print(g)#

# print(next(g))

# def bar():

# print('ok')

# cout = yield 1

# print(cout)

# #print('ok2')

# yield 2

# g =bar()

#next(g)

# g.send(none)

# g.send('eeee')

#迭代器iterator

#生成器都是迭代器,迭代器不一定是生成器

#什麼是迭代器:有兩個方法:1.有iter()方法,2.有next()方法

l = [1, 2

, 3, 4

, 5]

d = iter(l)

#print(d) #

#print(len(d))#typeerror: object of type 'list_iterator' has no len()

#for迴圈迭代出迭代器中的值

for i in

range(len(l)):

print(next(d))

from collections import iterator,iterable

print(isinstance(l,

list))#true,判斷是否為list型別

print(isinstance(l,iterable))#true,判斷是否為可迭代物件

print(isinstance(l,iterator))#false,判斷是否為迭代器

print(isinstance(d,iterator))#true,判斷是否為迭代器

迭代器 生成器 裝飾器

1.迭代器 1 定義 同時滿足 iter 方法和next 方法的物件就是迭代器。3 型別 可迭代物件通過iter 轉為迭代器 生成器是一種特殊的迭代器。2.生成器 1 定義 生成器是迭代器的一種,包括含有yield關鍵字函式和生成器表示式。2 用法 所有函式呼叫的引數都是第一次呼叫時保留的,而不是新...

生成器 迭代器 裝飾器

迭代器表面上看是乙個資料流物件或者容器,當使用其中的資料時,每次從資料流中取出乙個資料,直到資料被取完,而且資料不會被重複使用。從 的角度來看,迭代器是實現了迭代器協議方法的物件和類。迭代器協議方法主要是兩個 iter 該方法返回物件本身,它是for語句使用迭代器的要求 next 方法用於返回容器中...

生成器 裝飾器 迭代器

列表生成器 def f n return n 3 a f x for x in range 100 print a print type a 生成器 生成器一共兩種建立方式 1.x for i in range 0 2.yield 生成器在建立的時候已經決定了能計算出值的個數,呼叫next的次數超過...