13装饰器和内置函数
生活随笔
收集整理的這篇文章主要介紹了
13装饰器和内置函数
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
裝飾器
# 1.裝飾用的工具# import time ?#內(nèi)置函數(shù)計算函數(shù)運(yùn)行時間 # print(time.time())# import time # def func(): # start_time = time.time() # 代碼運(yùn)行之前的時間 # print('這是一個func函數(shù)') # time.sleep(3) # 阻塞,睡一下, 1 是睡一秒 # print(time.time() - start_time) # 代碼運(yùn)行后的時間 # func()# import time # def func(): # print('這是func函數(shù)') # time.sleep(1) # # def func1(): # print('這是func1函數(shù)') # time.sleep(2) # # def func2(): # print('這是func2函數(shù)') # time.sleep(3) # # def times(): # start_time = time.time() # 代碼運(yùn)行之前的時間 # func2() # print(time.time() - start_time) # 代碼運(yùn)行后的時間 # times()# import time # def func(): # def inner(): # time.sleep(2) # print('這是inner函數(shù)') # return inner # inner = func() # inner()# 開放封閉原則:# 開放對擴(kuò)展# 封閉修改源代碼# 改變了人家調(diào)用方式
裝飾器在不改變原程序上增加新功能,及可拓展# def warpper(): # print('這是新功能!') # func() # # def func(): # print(1) # # warpper()# def func(): # print('這是主功能') # # def warpper(f): # print('這是新功能!') # return f # func = warpper(func) # func()# def func(): # 我 # print('這是主功能!') # # def warpper(f): # 太白 # def inner(): # f() # print('這是新功能!') # # 擴(kuò)展的功能 # return inner # func = warpper(func) # func() # import time # def func(*args,**kwargs): # 我 # print(args) # print('這是主功能!') # time.sleep(1) # # def warpper(f): # 太白 # def inner(*args,**kwargs): # 帶點(diǎn)禮 # start_time = time.time() # f(*args,**kwargs) # end_time = time.time() # print('%s函數(shù)的運(yùn)行時間:%s'%(f.__name__,end_time - start_time)) # # 擴(kuò)展的功能 # return inner # func = warpper(func) # 問太白 # func(5) # 帶的禮進(jìn)去了import time# def warpper(f): # 接受被裝飾的函數(shù)內(nèi)存地址 # def inner(*args,**kwargs): # 接受被裝飾函數(shù)的參數(shù) # start_time = time.time() # 新功能 # ret = f(*args,**kwargs) # 調(diào)用被裝飾的函數(shù),被裝飾參數(shù)帶上 # end_time = time.time() # print('%s函數(shù)的運(yùn)行時間:%s'%(f.__name__,end_time - start_time)) # return ret # 被裝飾的函數(shù)返回值 # return inner # # @warpper # func = warpper(func) 語法糖 # def func(*args,**kwargs): # print(args) # 打印被裝飾的函數(shù)參數(shù) # print('這是主功能!') # time.sleep(1) # return '大媽' # 返回值 # ret = func(5) #ret = func(5) == inner(5) 返回值 func(5) # print(ret) # 被裝飾的函數(shù)返回值# def func(a): # """ # 被裝飾的函數(shù) # :return: # """ # print(a) # 1 # print('我是被裝飾的函數(shù)') # # # def warpper(f): # 接受一個被裝飾的函數(shù)內(nèi)存地址 # f == <function func at 0x0000023D5CE31E18> # def inner(a): # 接受一個被裝飾的函數(shù)的參數(shù) a = 1 # print('這是被裝飾的函數(shù)調(diào)用之前') # print(f.__name__) # func # f(a) # 調(diào)用被裝飾的函數(shù) f(1) == func(1) # print('這是被裝飾的函數(shù)調(diào)用之后') # return inner # # func = warpper(func) # 這樣要滿足人家規(guī)定的不改表調(diào)用方式 # # func == <function warpper.<locals>.inner at 0x000001BAC19D99D8> # print(func.__name__) # func = inner函數(shù) # func(5) # 調(diào)用inner函數(shù) func(1) == inner(1) # # print(func)# def warpper(f): # 接受一個被裝飾的函數(shù)內(nèi)存地址 # f == <function func at 0x0000023D5CE31E18> # def inner(a): # 接受一個被裝飾的函數(shù)的參數(shù) a = 1 # start_time = time.time() # print('這是warpper') # func # f(a) # 調(diào)用被裝飾的函數(shù) f(1) == func(1) # print('這是warpper') # return inner # # # def auto(f): # 接受一個被裝飾的函數(shù)內(nèi)存地址 # f == <function func at 0x0000023D5CE31E18> # def inner(a): # 接受一個被裝飾的函數(shù)的參數(shù) a = 1 # start_time = time.time() # print('這是auto') # func # f(a) # 調(diào)用被裝飾的函數(shù) f(1) == func(1) # print('這是auto') # return inner # # def login_auot(f): # 接受一個被裝飾的函數(shù)內(nèi)存地址 # f == <function func at 0x0000023D5CE31E18> # def inner(a): # 接受一個被裝飾的函數(shù)的參數(shù) a = 1 # start_time = time.time() # print('這是login_auto') # func # f(a) # 調(diào)用被裝飾的函數(shù) f(1) == func(1) # print('這是login_auto') # return inner # # # @warpper # func = warpper(func) # @login_auot # func = login_auto(func) # @auto # def func(a): # print(1) # # func(1)# 執(zhí)行的時候 從最上層裝飾器開始執(zhí)行 中間執(zhí)行被裝飾的函數(shù) 返回的時候是從下往上走# @warpper # 使用規(guī)范,裝飾放在被裝飾的函數(shù)離它最近正上方 # def func(a): # print('這是登錄') # func(5) # # @warpper # def reg(a): # print('這是注冊') # # reg(3) # # def index(): # print('這是主頁')# index()# from functools import wraps # # def warpper(f): # @wraps(f) #顯示被裝飾的函數(shù) # def inner(*args,**kwargs): # # print(f.__name__) # print(f) # return inner # # # def aa(): # print(1) # aa = warpper(aa) # print(aa.__name__) # 顯示被裝飾的函數(shù)名# def warpper(f): # 接受一個被裝飾的函數(shù)內(nèi)存地址 # f == <function func at 0x0000023D5CE31E18> # def inner(a): # 接受一個被裝飾的函數(shù)的參數(shù) a = 1 # start_time = time.time() # print('這是warpper') # func # f(a) # 調(diào)用被裝飾的函數(shù) f(1) == func(1) # print('這是warpper') # return inner# @warpper # def func(): # print(1) # func()# def func(): # print(1) # func = warpper(func) # func()
?
什么是內(nèi)置函數(shù)? 就是python給你提供的. 拿來直接用的函數(shù), 比如print., input等等.
截止 到python版本3.6.2 python一共提供了68個內(nèi)置函數(shù). 有 一些我們已經(jīng)用過了. 有一些還沒有用過. 還有一些需要學(xué)完了面向?qū)ο蟛拍芾^續(xù)學(xué)習(xí)的.
今 天我們就認(rèn)識一下python的內(nèi)置函數(shù).
# 1.記住怎么用# print(abs(-98)) # 求絕對值 正的負(fù)的 出來后全都是正的 **# print(all([1,0,3,4])) # all 判斷元素中都為真的才是真 *# print(any([1,False,0])) # any 判斷元素中只要有一個為真就是真 *# print(ascii('你')) # 查看元素對應(yīng)的內(nèi)容# print(bin(10)) # 將10進(jìn)制轉(zhuǎn)行2進(jìn)制 **# print(bool([1])) # 將內(nèi)容轉(zhuǎn)換成布爾值# b = bytearray('meet'.encode('utf-8')) # # 返回一個新的元組,元組可以切片,切片的內(nèi)容對應(yīng)的ascii表 # print(b[3])# print(bytes('你',encoding='utf-8')) * # print('你'.encode('utf-8'))# def func(): # pass # # print(callable(func)) # 檢查這個對象是否可以調(diào)用 **# print(chr(65)) # 輸入數(shù)字,返回對應(yīng)的ascii表位上對應(yīng)的內(nèi)容 **# a = compile('input(">>>")','','exec') # exec(a)# print(complex(8)) # 復(fù)數(shù) *# print(dict(key=1,name=2))# print(dir([1,2])) # 查看對象的所有方法 ***# print(divmod(5,2)) # 返回一個元組,元組的第一個元素是商,第二個元素是余數(shù) **# print(enumerate) # 枚舉# li = [1,2,3,4,5,6,7] # # for i,em in enumerate(li,1): # enumerate不寫值默認(rèn)是0 **** # # enumerate 第一個參數(shù)是可迭代對象,第二參數(shù)是計數(shù) # print(i,em)# s = """9+4+3""" # 將字符串中內(nèi)容執(zhí)行 # print(eval(s)) # 上班以后禁止使用# li = [1,23,4,] # s = """ # def func(): # print(1) # func() # """ # g = exec(s) # print(g) # print(li) # 公司非常禁止# print(float(20))# i = 3.56 # print(int(i))# python3 6 / 3 2.0 # python2 6 / 3 2# 's'.format() # 字符串的方法 # print(format('a','>10')) # 公用函數(shù) 右對齊 # print(format('a','<10')) # 公用函數(shù) 左對齊 # print(format('a','^10')) # 公用函數(shù) 居中# print(format(3,'b'))# print(format(3,'08b')) # 00000011 二進(jìn)制 # print(format(3,'o')) # 八進(jìn)制 # print(format(3,'x')) # 八進(jìn)制# a = 1 # def func(): # pass# print(globals()) # 查看全局都哪些內(nèi)容 ** # print(b) # print(globals().get('b'))# dic = {[1,2,3]:1} # print(hash([1,2,3])) #求對象的哈希值 *# print(help(input)) # 不知道怎么用的時候可以使用help查看一下# print(hex(33)) # 將10進(jìn)制轉(zhuǎn)換成16進(jìn)制 *# print(id('s')) # 查看數(shù)據(jù)的內(nèi)存地址 ***# print(input(">>>")) # 獲取用戶輸入的內(nèi)容 *****# print(int()) # 將數(shù)據(jù)轉(zhuǎn)換成整型 *****# print(isinstance([1,2,3],str)) #判斷這個數(shù)據(jù)時什么類型 ***# iter # 判斷是不是可迭代對象 ***# len() # 獲取數(shù)據(jù)的長度 *****# list() # 轉(zhuǎn)換成一個列表 ***# def func(): # a = 1 # print(locals()) # 查看局部空間的內(nèi)容 *** # # func()# print(max(1,2,3,4,5)) # 求最大值 ***# print(min(1,2,3,4)) # 求最小值 ***# print(memoryview(b'a')) # 查看字節(jié)的內(nèi)存地址# print(next()) # 迭代器中的取下一個值 ***# print(oct(9)) # 將10進(jìn)制轉(zhuǎn)換成8進(jìn)制 **# open(文件名,對這個文件要操作的模式,編碼)# '你好'.encode('utf-8') # coding:utf-8# print(ord('中')) # 輸入的是unicode編碼的內(nèi)容 ** # print(chr(20013)) # 輸入的是unicode的內(nèi)容 **# print(pow(2,3)) #兩個參數(shù)的時候求冪運(yùn)算 # print(pow(2,3)) #三個參數(shù)的時候先求冪運(yùn)算在取余# print('你好','我好',sep=' ',end='') # print('大家好')# print('你好',file=open('a','w',encoding='utf-8'))# print('123') # 是處理后給你顯示的 ***** # print(repr('123')) # 顯示的是原數(shù)據(jù) ***# print(list(reversed())) # 反轉(zhuǎn) 元組,列表,字符串 ****# print(round(5.472343212,3)) #四舍五入 ***# li = [1,2,3,4] # # s = slice(2) #切片 # print(li[3])# print(sum({1:4,2:5})) #求和 ***# print(type('aasas')) # 獲取數(shù)據(jù)類型# print(vars(str)) # print(locals())# li = [1,2,3,4] # ls = [5,6,7,4,5,6] # lst = ['a','b','c','d','e'] # print(list(zip(li,ls,lst))) #拉鏈 ****# __import__('time') # 導(dǎo)入的方式 ---- > 反射# 重要的:*************************************************# 匿名函數(shù):# lambda 關(guān)鍵字 x參數(shù):x是返回值 # 一行函數(shù) 用于簡單需求 # print((lambda x:x)(5)) # lambda 的返回值只能是一個# f = lambda x,y:x*y # print(f.__name__) #<lambda> # print(f(5,6))# print(sorted([7,2,3,4],reverse=True))# li = ['你好啊','我好','大家都挺好']# def func(li): # return len(li) # print(sorted(li,key=func)) # key指定一個排序的規(guī)則# print(sorted(li,key=lambda x:len(x)))# li = [ # {'age':19}, # {'age':52}, # {'age':48}, # {'age':30}, # ]# def func(li): # return li['age'] # print(sorted(li,key=func))# print(sorted(li,key=lambda x:x['age']))# li = [1,2,3,4] # # def func(a): # if a > 2: # return a # print(list(filter(func,li)))# def func(li): # for i in li: # if i > 2: # print(i) # # func(li)# li = [1,2,3,4] # # print(list(filter(lambda x:x>2,li)))# li = [1,2,3,4,5] # # def func(i): # return i+10 # print(list(map(func,li))) #映射# li = [1,2,3,4,5] # print(list(map(lambda x:x+10,li)))# from functools import reduce # # li = [1,2,3,4,5] # # def func(x,y): # x=12345 # return x*10+y # reduce 是做累計算的 # print(reduce(func,li))
?
轉(zhuǎn)載于:https://www.cnblogs.com/xiaozhu1993/p/10554309.html
總結(jié)
以上是生活随笔為你收集整理的13装饰器和内置函数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 试管婴儿移植囊胚几率
- 下一篇: .gitignore文件如何编写?