1.函數即變量python
函數即變量,hello爲變量,輸出的是一個內存地址,它把函數體存儲在內存裏;hello()是一個函數,函數名+小括號就是調用函數。json
1 def hello(): 2 print('nihao') 3 print(hello) 4 hello()
2. 高階函數dom
一個函數的入參是一個函數時,這個函數就是高階函數。函數
1 def s_int(n): 2 return int(n) 3 def add(x,y,z): 4 print(z(x)+z(y)) #z是一個函數,把x、y的值傳給z,而後z函數處理後把兩個值相加 5 add('2','3',s_int)
3. 嵌套函數spa
嵌套函數就是在函數內部再定義一個函數,注意是定義一個函數,而非是再調用一個函數。code
1 def test1(): 2 def test2(): 3 print('test2') 4 print('test1') 5 test2() 6 test1()
四、裝飾器orm
裝飾器實際就是裝飾函數,它的做用是給別的函數增長新功能,卻不改變原來函數的調用方式;對象
下面是一個統計函數調用時間的函數,它經過裝飾器在不改變原有函數調用方式的前提下,統計了運行時間。blog
1 import time 2 def test1(func): 3 def deco(): #此函數進行運行時間計算 4 start_time = time.time() 5 func() 6 stop_time = time.time() 7 print('the func run time is %s' % (stop_time - start_time)) 8 return deco #函數運行後返回deco變量 9 @test1 #調用裝飾器,用在須要統計時間的函數前面 10 def bar(): 11 time.sleep(2) 12 print('in the bar') 13 bar() #調用該函數時,執行了裝飾函數,統計了運行時間
5. 遞歸函數排序
一個函數子集調用本身就是遞歸函數,一個函數最多可調用本身999次,故其要有一個明確的結束條件,另遞歸函數的效率
不高,儘可能少用。
1 def test(): 2 num = int(input('please enter a num:')) 3 if num%2 == 0: 4 return True 5 else: 6 print('非偶數,請從新輸入') 7 test() #能夠起到循環的做用 8 test()
6. 內置函數
python默認定義好的函數
1 #強制類型轉換 2 bool('s') #bool類型 3 int() #整形 4 float() #小數 5 str() #字符串 6 dict() #字典 7 list() #列表 8 set() #集合 9 tuple() #元組 10 11 print(dir(1)) #打印傳入對象的可調用方法 12 print(eval('[]')) #執行python代碼,只能執行簡單的,定義數據類型和運算 13 print(exec('def a():pass')) #執行python代碼 14 15 filter(func,[1,2,3,4]) #根據前面的函數處理邏輯,依次處理可迭代回想裏的每個元素 16 #返回true,則返回 17 print(list(filter(func,[1,2,3,4]))) #調用方式 18 map(func,[1,2,3,4]) #根據前面的函數處理邏輯,依次處理後面可迭代對象裏面的每一個元 19 # 素,保存前面函數返回的全部結果 20 print(locals()) #返回局部變量 21 print(globals()) #返回全部全局變量,返回一個字典 22 print(max(111,12)) #取最大值 23 print(round(11.11,2)) #取幾位小數 24 print(sorted([2,31,34,6,1,23,4])) #排序 25 print(sorted(dic.items())) #按照字典的key排序 26 print(sorted(dic.items(),key=lambda x:x[1])) #按照字典的value排序
七、模塊
模塊其實就是一個python文件,導入模塊的本質是把Python文件從頭至尾執行一遍
#模塊導入方式
import os #方法一,導入整個模塊
os.path.exists('xxx') #調用os下的函數
from os import path #方法二,直接調用os下的某個函數
from day5.model import hello #導入day5文件夾下的model文件中的hello方法
hello()
random模塊
1 import random 2 print(random.random()) # 隨機浮點數,默認取0-1,不能指定範圍 3 print(random.uniform(1, 5)) # 隨機取浮點數,能夠指定範圍 4 print(random.randint(1, 20)) # 隨機整數 5 print(random.randrange(1, 20)) # 隨機產生一個range 6 print(random.choice([1,2,3,4,5])) # 隨機取一個元素 7 print(random.sample([1,2,3,4,'6'], 3)) # 從序列中隨機取幾個元素,返回的是一個list 8 x = [1, 2, 3, 4, 5, 6] 9 random.shuffle(x) # 洗牌,打亂順序,會改變原list的值
json模塊
json和python的字典類型,可是json裏面只能是雙引號,不能是單引號,能夠經過在線格式驗證來判斷格式。
1 import json 2 3 print(json.dumps(dic)) # 把字典轉成json串 4 print(json.loads(s_json)) # 把json串轉換成字典 5 6 print(json.dump(dic, f)) # 把字典轉換成的json串寫到一個文件裏面 7 print(json.load(f)) # 從文件中讀取json數據,而後轉成字典