'''高階函式定義:
1、函式接受的引數是乙個函式名
2、函式的返回值是乙個函式名
3、滿足上述條件任意乙個,都可稱之為高階函式
'''#
函式接受的引數是乙個函式名的情況下,要改變函式的呼叫方式
deffoo():
time.sleep(2)
print("
憨憨你好")
deftest(func):
(func)
start_time=time.time()
func()
stop_time=time.time()
print('
函式的執行時間是%s
' %(stop_time-start_time))
test(foo)
#修改了函式的呼叫方式
#函式的返回值是乙個函式名,此時不需要改變函式呼叫方式
deffoo():
print('
from the foo')
deftest(func):
return
func
foo =test(foo)
foo()
deffoo():
time.sleep(3)
print('
來自foo')
#完成裝飾器新增功能
#該寫法多執行了一次 所以高階函式無法滿足裝飾器運用
deftimmer(func):
start_time =time.time()
func()
stop_time =time.time()
print('
函式執行時間%s
' % (stop_time -start_time))
return
func
foo =timmer(foo)
foo()
deffather(name):
print('
from father %s
' %name)
defson():
print('
他的爸爸是%s
' %name)
defgrandson():
print('
他的爺爺是%s
' %name)
grandson()
son()
father('憨憨
')
#列印1+2+3+..+100 並且列印出執行時間
import
time
defcal(l):
start_time =time.time()
res =0
for i in
l: time.sleep(0.01)
res +=i
stop_time =time.time()
print("
函式的執行時間是%s
" % (stop_time -start_time))
return
resprint(cal(range(100)))
def timmer(func): #
計算函式執行時間功能
start_time =time.time()
res = func(*args, **kwargs)
stop_time =time.time()
print('
函式執行的時間是%s
' % (stop_time -start_time))
return
res
return
@timmer
#在不動原函式的基礎上 為該函式加上其他功能
defcal(f):
res =0
for i in
f: time.sleep(0.1)
res +=i
return
resprint(cal(range(100)))
deftimmer(func):
def start_time =time.time()
func()
#執行的就是test
stop_time =time.time()
print('
執行時間是%s
' % (stop_time -start_time))
return
@timmer
#相當於 test=timmer(test)
deftest():
time.sleep(3)
print('
test已經執行')
test()
#將下列方法加上驗證裝飾器
current_dic =
user_list =[,,
]def
yanzheng(func):
if current_dic['
username
'] and current_dic['
login']:
res = func(*args, **kwargs)
return
res username = input('
輸入使用者名稱:
').strip()
pwd = input('
輸入密碼:
').strip()
for user_dic in
user_list:
if username == user_dic['
name
'] and pwd == user_dic['
pwd'
]: current_dic[
'username
'] =username
current_dic[
'login
'] =true
res = func(*args, **kwargs)
return
res
else
:
print('
輸入的使用者名稱和密碼有誤')
return
@yanzheng
defindex():
print('
歡迎來到京東**')
@yanzheng
defjiaose(name):
print('
進入%s頁面
' %(name))
@yanzheng
defshopping_car(name):
print('
%s購物車裡面有[%s,%s,%s]
' % (name, '
飛機', '
火箭', '娃娃'
))index()
jiaose(
'管理員')
shopping_car(
'產品經理
')
Linux第十一課
apache 一 虛擬主機 apache可基於ip位址 主機網域名稱 埠號實現提供多個 同時為外部提供訪問服務的技術。使用網域名稱,要在 etc hosts檔案中做本地強制解析 基於埠號,要注意新增用於監聽埠的引數 二 訪問控制 基於源主機名 源ip位址 或源主機上的瀏覽器特徵等資訊對 上的資源繼續...
第十一課 文法
數量的說法 1 計算物品時的說法。11以上用數字計算。2 量詞 計算人 物時,或要表示某種數量時,物件不同使用的量詞也會不同。量詞直接放在數字後面使用。人 計算人數。但是,乙個人時說 人 兩個人時用 人 人 要唸 臺 計算機械,或汽車,自行車等交通工具時使用。枚 計算薄或扁平的物品。紙張,襯衫,盤子...
第十一課C 異常
異常的機制,格式如下 try 後面可以抓取很多和catch 編譯器會根據 引數來進行匹配 catch char s catch int a catch 表示剩下全部的情況 include include using namespace std classa voidk void voidkk voi...