import timecurrent_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...