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