python--函數(二)、裝飾器、

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數據,而後轉成字典
相關文章
相關標籤/搜索