定義函數的三種形式
- 無參數函數,通常無返回值 - 有參數函數,函數的功能執行依賴外部傳入的參數,有參數函數通常有返回值 def add(x,y): sum=x+y return sum - 空函數 def insert(): pass
函數返回值
- 返回值爲None 沒寫return return 啥也不接 return None - 一個返回值 def foo(): return x - 多個返回值 return 值1,值2,值3,值4 --->返回結果組成tuple
調用函數
def dog(): print('dog') def cat(cat): print('===>',cat) dog() cat('加菲')
調用函數的三種方式:
- dog() #直接調用 - 調用函數的表達式形式 def add(x,y): sum=x+y return res res=add(3,5) * 1000 - 把函數調用當中另外一個函數的參數 res=max(max(3,5),7)
函數的參數:
- 形參 定義函數時的參數名稱 - 實參 調用函數時傳入的參數
詳細區分函數的參數
- 位置參數 def foo(x,y,z): print(x,y,z) foo(1,2,3) 實參位置和形參位置一一對應 - 關鍵字參數: def foo(x,y,z) print(x,y,z) foo(z=3,y=1,x=4) foo(1,z=3,y=5) 注意點: 1. 關鍵字實參必須在未知實參後面 2. 不能重複對一個形參傳值 - 默認參數 def reg(name,age,sex='male'): print(name,age,sex) 注意點: 1. 定義函數時,默認參數必須在非默認參數之後 2. 默認參數在定義階段智能賦值一次 3. 默認參數通常定義成不可變類型 - 可變長參數, 1. *會把溢出的按位置定義的實參都接受,以元組形式賦值給args def foo(x,y,*args): print(x,y) print(args) foo(1,2,3,4,5,6) 輸出: 1 2 (3,4,5,6) tuple形式 2. def foo(x,y,**kwargs):**會把溢出的按關鍵字定義的實參都接收,以字典的形式賦值給kwargs print(x,y) print(kwargs) foo(1,2,c=2,name='lh',age=18) 輸出: 1 2 {'c': 2, 'name': 'lh', 'age': 18} 例子: def foo(name,age=10,*args,sex='male',height,**kwargs): print(name) print(age) print(args) print(sex) print(height) print(kwargs) foo('alex',1,2,3,4,5,sex='female',height='150',a=1,b=2,c=3) 輸出: alex 1 (2, 3, 4, 5) female 150 {'c': 3, 'a': 1, 'b': 2} def foo(x,y,z): print('from foo',x,y,z) def wrapper(*args,**kwargs): print(args) print(kwargs) foo(*args,**kwargs) # wrapper(1,2,3,a=1,b=2) wrapper(1,z=2,y=3) 輸出: (1,) {'z':z,'y':3} from foo 1 3 2
文件操作
f=open('a.txt','r+') 對文件進行讀寫
f=open('a.txt','w+') 寫讀
f=open('a.txt','a+') 追加並且讀
f=open('a.txt','w') f.write('1111\n') f.close() 關閉以釋放內存
上下文管理
with open('a.txt','r',encoding='utf-8') as f: print(f.read()) with open('txt','r',encoding='utf-8') as read_f,\ open('aa.txt','w',encoding='utf-8') as write_f: for line in read_f: write_f.write(line) else:#在上面流程執行成功之後,顯示寫入成功 print('write ok')
decode() 解碼
with open('b.txt','rb') as f: print(f.read().decode('utf-8'))
encode() 編碼
with open('c.txt','wb') as data: data.write('工地人'.encode('utf-8'))