一、介紹python
編程方式:編程
面向對象:華山派 --》類 --》關鍵字 :classide
面向過程:少林派 --》過程 --》關鍵字:過程 def函數式編程
函數式編程:蛋黃派 --》函數 --》關鍵字:def函數
二、定義 測試
初中函數 x與y , x是因變量y是自變量 y是x的函數 隨着x的變化y都有一個肯定的值,好比 y=2xspa
Python定義 :邏輯結構化與過程化 def 函數名(參數):表明接着寫子代碼 邏輯 再定義返回值 returncode
(過程和函數 關鍵字都是def,實際爲沒有返回值的函數)orm
''' def fun(): "定義一個測試函數" return ("CPU:" + str(psutil.cpu_times()) + "%") x = fun() '''
可重複利用,low例子對象
#Herbie Kim #!/usr/bin/python # -*-coding:utf-8-*- #重複利用 import time def logger(): time_format = '%Y-%m-%d %X' time_current = time.strftime(time_format) with open('a.txt','a+') as f: f.write('%s end action\n' %time_current) def test1(): print('in the test1') logger() def test2(): print('in the test2') logger() test1() test2()
返回值
def test1(): print('hehe....') def test2(): print('hehe....') return 0 def test3(): print('hehe....') return 1,'kim',['1','hello'],{'name':'herbie'} x = test1() y = test2() z = test3() print(x) print(y) print(z)
參數:
形參與實參
#形參與實參 def test(x,y): #x,y 表明形參 print(x) print(y) #test(1,2) #()內容實參(位置參數爲x,y賦值) test(1,y=5) # y=5 關鍵字參數,關鍵字等於賦值 test(x=3,4) #報錯,關鍵字參數沒法放在位置參數前
非固定參數
def test4(name,age=18,*args,**kwargs): print(name) print(age) print(args) print(kwargs) test4('kim',age=20,home='liangzhu',cat='tesla')
局部變量做用域於函數中,外部調用沒法生效 (函數中定義)
name = "kim" def change_name(name): print("我原本叫:",name) name = "cake" #局部變量,只做用域於函數內部,並未改變原生變量名name print("可是以後叫:",name) change_name(name) print(name)
全局變量做用於全局一開始就在程序中定義,函數中也可修改局部變量,當變量爲參數或函數沒法修改(但不能改!)
name = "kim" age = 19 def change_name(name): global age #在函數中修改全局變量 age = 18 name = "cake" print("我原本叫:",name,"今年:",age) #name = "cake" #局部變量,只做用域於函數內部,並未改變原生變量名name print("可是以後叫:",name,"今年也:",age) change_name(name) print(name) print(age)
注意:局部變量沒法修改全局變量只有當 此變量是單純的字符串或數字。當變量爲複雜一些的列表、字典能夠修改
names = ["kim","cake","sun"] def change_name(names): names[0] = "金某人" print(names) change_name(names) print(names)
若是一個函數在內部本身調用自己,那麼就是遞歸函數;
def care(n): print(n) return care(n+1) care(0)
特性:
使用場景:傳入一個數值一直除以2到沒法除爲止
def care(n): print(n) if int(n/2) > 0: return care(int(n/2)) print("-->",n) care(100)
變量能夠指向函數,函數的參數能接收變量,那麼一個函數就能夠接收另外一個函數做爲參數。這種函數就稱爲高階函數
def go(x,y,f): return f(x) + f(y) res = go(3,-6,abs) #abs 能夠將負數轉爲正數 print(res)