之前一直知道裝飾器可以增強一個已經(jīng)存在的方法,Python也提供了annotation的方法,很好用. 但是再看flask login的擴展包的時候. 發(fā)現(xiàn)裝飾器還可以實現(xiàn)回調(diào)函數(shù)的注冊功能.
成都創(chuàng)新互聯(lián)自2013年起,是專業(yè)互聯(lián)網(wǎng)技術服務公司,擁有項目成都做網(wǎng)站、網(wǎng)站設計網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元阜城做網(wǎng)站,已為上家服務,為阜城各地企業(yè)和個人服務,聯(lián)系電話:028-86922220
flask login就是通過下面的裝飾器,來注冊回調(diào)函數(shù),當沒有sessionID時,通過裝飾器指定的函數(shù)來讀取用戶到session中.
@login_manager.user_loader
下面寫了一個簡單的測試例子來演示這個功能.
import time
import functools
class Test():
#/**feature將調(diào)用callback(), 但是在Test中并沒有真正的定義callback**/
def feature(self):
self.callback()
def decorate(self, func):
self.callback=func
return func
test = Test()
#/**將foo注冊為回調(diào)函數(shù)*//
@test.decorate
def foo():
print 'in foo()'
#/**調(diào)用feature將觸發(fā)回調(diào)函數(shù)**/
test.feature()
def log_in():
username=input("輸入用戶名(不小于3位)")
if len(username)=3:
password=input("密碼(不小于六位)")
if len(password)=6:
pass_1=input("再次輸入密碼")
if password==pass_1:
print("注冊成功")
else:
print("兩次輸入密碼不一致")
log_in()
else:
print("密碼長度不符合要求")
log_in()
else:
print("帳號長度不符合要求")
log_in()
log_in()
使用列表的count方法,因為count方法可以做對象內(nèi)的元素進行出現(xiàn)次數(shù)疊加計算
list1=[1,2,3,4,4,5,6,7]list1.count(1)??#結果為1list1.count(4)??#結果為2for?i?in?list1:????if?list1.count(i)=2:????????print('該元素%s重復'%i)#結果:該元素4重復該元素4重復????#因為迭代了兩次4所以有兩次輸出,功能是實現(xiàn)了,但是卻打印了兩次,有點不理想!? ?
1、函數(shù)定義
①使用def關鍵字定義函數(shù)
②
def 函數(shù)名(參數(shù)1.參數(shù)2.參數(shù)3...):
"""文檔字符串,docstring,用來說明函數(shù)的作用"""
#函數(shù)體
return 表達式
注釋的作用:說明函數(shù)是做什么的,函數(shù)有什么功能。
③遇到冒號要縮進,冒號后面所有的縮進的代碼塊構成了函數(shù)體,描述了函數(shù)是做什么的,即函數(shù)的功能是什么。Python函數(shù)的本質(zhì)與數(shù)學中的函數(shù)的本質(zhì)是一致的。
2、函數(shù)調(diào)用
①函數(shù)必須先定義,才能調(diào)用,否則會報錯。
②無參數(shù)時函數(shù)的調(diào)用:函數(shù)名(),有參數(shù)時函數(shù)的調(diào)用:函數(shù)名(參數(shù)1.參數(shù)2.……)
③不要在定義函數(shù)的時候在函數(shù)體里面調(diào)用本身,否則會出不來,陷入循環(huán)調(diào)用。
④函數(shù)需要調(diào)用函數(shù)體才會被執(zhí)行,單純的只是定義函數(shù)是不會被執(zhí)行的。
⑤Debug工具中Step into進入到調(diào)用的函數(shù)里,Step Into My Code進入到調(diào)用的模塊里函數(shù)。
對注冊表進行操作前,必須打開注冊表。在Python中,可以使用以下兩個函數(shù):RegOpenKey和RegOpenKeyEx。其函數(shù)原型分別如下所示。
Html代碼??
RegOpenKey(key,?subKey?,?reserved?,?sam)??
RegOpenKeyEx(key,?subKey?,?reserved?,?sam)??
兩個函數(shù)的參數(shù)一樣。參數(shù)含義如下。
key:必須為表10-1中列出的項。
subKey:要打開的子項。
reserved:必須為0。
sam:對打開的子項進行的操作,包括win32con.KEY_ALL_ACCESS、win32con.KEY_READ、win32con.?KEY_WRITE等。
以下實例實現(xiàn)打開注冊表“HKEY_CURRENT_USER\Software”項。