1. 程式人生 > >裝飾器-內置函數

裝飾器-內置函數

裝飾 應用 sci 第一個 foo 比較 代碼 reverse ray

裝飾器

裝飾內容的一個工具 本質是閉包

開放封閉原則(寫代碼必須遵守):

1.對擴展開放

2.對修改源代碼封閉

3.不改變調用方式

作用:在不改變源代碼的基礎上,新增功能

import time

print(time.time())         #時間戳 每次打印時間不一樣,跟著時間在變

time.sleep()                 #定義睡眠時間

語法糖

在被裝飾的函數正上方,加一個@裝飾器的名字 獨占一行

被裝飾的函數名 = 裝飾器的名字(被裝飾的函數名)

import time
def inner(x):
def wapeer():
s_time = time.time()
x()
ss_time 
= time.time() print(ss_time - s_time) return wapeer @inner #foo = inner(foo) def foo(): time.sleep(3) #睡眠時間為3秒 print(is foo) foo()

當被裝飾的函數內自帶參數時:

import time
def inner(x):
def wapeer(*args,**kwargs):
s_time = time.time()
x(*args,**kwargs)
ss_time = time.time()
print(ss_time - s_time)
return wapeer def num_sum(*args,**kwargs): print(*args,**kwargs) num_sum = inner(num_sum) num_sum(2,3,5,3,7)

一個函數可以對應多個裝飾器

裝飾器應用:增加一些功能,校驗用戶登錄的時候 Django 面向對象

內置函數

abs(值) 絕對值

all(可叠代數據) 檢查可叠代對象的每一個元素是不是為真 只有都為真 才返回True

any(可叠代數據) 檢查可叠代對象的每一個元素是不是為真 只要有一個為真就是True

ascii() 如果在ascii碼中,就原生顯示,不在ascii中,顯示\u...

bytearray(‘...‘,encoding = ‘utf-8‘)

bytes(‘...‘,encoding = ‘utf-8‘)

callable() 判斷是不是可調用 返回布爾值

chr(碼位) 對應ascii碼 顯示碼位對應的內容

complex() 實數和虛數
enumerate(可叠代對象,起始值) 枚舉 起始值不寫的時候默認是0,也可以自己定義起始值

li = [1,2,3,4,5]
for i,e in enumerate(li):
print(i,e)

結果:
0 1
1 2
2 3
3 4
4 5

eval 執行部分字符串中的內容 在開發中禁止使用

exec 執行字符串中的內容 禁止使用

float(浮點數) 浮點 可以把整型轉正浮點型

format 可以作為字符串方法,單獨使用作為內置函數

for(‘meet‘,‘>20‘) 右對齊

for(‘meet‘,‘<20‘) 左對齊

for(‘meet‘,‘^20‘) 居中

hash 哈希,確認哪些數據可以當做字典的鍵 有值就是可以

help 幫助查看官方文檔的方法

max 比較每一個元素,取最大值

min 比較每一個元素,取最小值

sum 求和,裏面放可叠代數據

memoryview(b‘內容‘) 求字節的地址地址
ord 查看unicode表位
pow(2,3) 兩個參數的時候,冪(2的3次冪)
pow(2,3,3) 三個參數的時候,求冪後再取余
print(‘你好‘,end = ‘‘) 取消換行符

print(‘你好‘,sep = ‘|‘) 插入管道符

repr 顯示數據的原生

reversed 反轉 叠代器

round() 大約,四舍五入,第一個參數是浮點數,第二個參數是要保留的小數位
zip 拉鏈

lst = [1,2,3,4]
lst = [1,2,3]
for i in zip(lst,lst1):
print(i)                              

結果:
(1,1)
(2,2)
(3,3)

#如果長度不統一,按照最短的來

lambda 匿名函數

lambda 參數:返回值

print((lambda x:x+x)(3))

匿名參數的時候定義和函數 沒有def 沒有函數名 查看函數名用__name__

有形參,可以接收多個

返回值只能用一個

匿名函數是沒有名字的,賦值的變量只是方便調用,調用的時候要傳參

sorted(可叠代對象) 默認升序

sorted(可叠代對象,reverse = True) 降序

sorted(‘可叠代對象‘,key=‘函數名‘(函數名裏寫排序規則),reverse = true的時候是降序)

lst = [dfhjk,swty,sewqea]
print(sorted(lst,key = lambda x:len(x),reverse=True))         #key是一種排序的規則,不寫的話就以數字的大小去排序,寫了就按照規則排序

結果:
[sewqea, dfhjk, swty]

filter 篩選過濾

filter(‘寫好過濾規則的函數‘,可叠代對象) 函數可以是匿名的,也可以是定義好的

lst = [1,2,3,4,5,6,7]
dic = [{name:alex,age:19},{name:wusir,age:16}]
print(list(filter(lambda x:x[age]>17,dic)))
print(list(filter(lambda x:x>3,lst)))

結果:
[{name: alex, age: 19}]
[4, 5, 6, 7]

map 映射函數 可以快速將多個元素相同的可叠代對象進行相同索引的一一累加

lst = [1,2,3,4]
print(list(map(lambda x:x**2,lst)))
print(list(map(lambda x:x**x,lst)))
print(list(map(lambda x:x**x+1,lst)))

結果:

[1, 4, 9, 16]
[1, 4, 27, 256]
[2, 5, 28, 257]

 
lst = [1,2,3,4]
def func(x):
return x**2
print(list(map(func,lst)))

結果:
[1, 4, 9, 16]

lst1 = [2,3,4,5]
lst2 = [3,4,5,6]
print(list(map(lambda x,y:x+y,lst1,lst2)))

結果:
[5, 7, 9, 11]


reduce 累 計算 快速求一個可叠代對象的累計算

from functools import reduce      #python3導入方式
lst = [1,2,3,4]
print(reduce(lambda x,y:x**2,lst))

結果:
1

裝飾器-內置函數