有參裝飾器 迭代器day13

2022-02-02 04:21:48 字數 1875 閱讀 3474

import time

current_user=

def auth(engine='file'):

def deco(func):

if current_user('user'):

res=func(*args,**kwargs)

return res

user=input('username>>: ').strip()

pwd=input('password>>: ').strip()

if egine=='file':

if user=='egon' and pwd=='123':

print('login successful')

current_user['user']=user

res=func*args,**kwargs)

return res

else:

print('user orr password error')

elif engine == 'mysql':

print('基於mysql的認證')

elif engine == 'ldap':

print('基於ldap的認證')

else:

print('無法識別認證**')

return deco

def index():

print('welcome to index page')

time.sleep(1)

@auth(engine='mysql')

def home(name):

print('welecome %s to home page' %name)

time.sleep(0.5)

index()

home('egon')

什麼是迭代器?

迭代器即迭代取值的工具

迭代:迭代是乙個重複的過程,每一次重複都是基於上一次結果而來的

a)單純的重複並不是迭代

while true:

print(1)

b)迭代

l=['a','b','c']

def iterator(item):

i=0while i < len(item):

print(l[i])

i+=1

為什麼要有迭代器

基於索引的迭代器取值方式只適用於列表、元組、字串型別

而對於沒有索引的字典、集合、檔案則不在適用

所以必須找到一種通用的並且不依賴索引的迭代器取值方式-----》迭代器

迭代器適用於可迭代的型別

可迭代物件:

在python中但凡內建有__iter__方法的物件都是可迭代的物件

字串、列表、元組、字典、集合、檔案都是可迭代物件

迭代器物件:指的是既有內建__iter__方法,又有內建__next__方法的物件

執行可迭代物件的__iter__方法得到的就是內建的迭代器物件

檔案物件本身就是迭代器物件

注:迭代器物件一定是可迭代物件,反之則不然

一旦迭代器取值取乾淨,再繼續取就會丟擲stopiteration

for 迴圈:迭代器迴圈

in後跟的一定是可迭代物件

迭代器物件:指的是既內建有__iter__方法,又內建有__next__方法的物件

執行迭代器物件的__next__得到的是迭代器的下乙個值

執行迭代器物件的__iter__得到的仍然是迭代器本身

總結迭代器物件的優缺點:

優點:1、提供了一種通用的、可以不依賴索引的迭代取值方式

2、迭代器物件更加節省記憶體

缺點:1、迭代器的取值不如按照索引的方式更靈活,因為它只能往後取不能往前退

2、無法**迭代器值的個數

Python學習之路 day 13 迭代器

一.迭代器介紹 1.什麼是迭代器 1.1.迭代器指的是迭代取值的工具 1.2.迭代是一重複的過程,每一次重複都是基於上一次的結果而來 單純的重複不是迭代 i 0 while true print i 迭代 重複 每次重複都是基於上一次的結果而進行 l a b c i 0while i len l p...

Python學習之路 day 13 迭代器

一.迭代器介紹 1.什麼是迭代器 1.1.迭代器指的是迭代取值的工具 1.2.迭代是一重複的過程,每一次重複都是基於上一次的結果而來 單純的重複不是迭代 i 0 while true print i l a b c i 0while i len l print l i i 1 2.為何要用迭代器 迭...

Python 學習記錄 裝飾器 模組 Day13

1 什麼是 閉包 如果在 個內部函式 對在外部作 域 但不是在全域性作 域 的變數進 引 那麼 內部函式就被認為是閉包 closure 即 閉包 函式塊 引 環境 示例 def outer n num n definner return num 1return inner print outer 3...