python函式程式設計的優點
1、保持**的可重用性(意思就是你不需要在不同的場合下寫重複的**)
2、保持**的可拓展性(意思就是在哪個地方需要修改一下,你只需要修改函式裡面的內容,而不需要修改每個使用到它的地方)
3、保持**的一致性(意思就是函式某個地方改變了,其它用到它的地方都變了)
函式返回值
當沒有返回值的時候就是乙個過程,返回none
當返回值是乙個具體的數時,返回的是乙個object(物件)
當返回的值不止乙個時,返回的是乙個元組(tuple)
關鍵字引數和位置引數
關鍵字引數與形參順序無關
位置引數與形參順序一一對應
當關鍵字引數與順序引數混合的時候,按位置引數的順序來,所以不能將關鍵字放在順序引數前面。舉例說明如下:
def
test
(x,y):
print(x)
print(y)
#test(x=2,1)#關鍵字引數不能放在位置引數前面
test(2,y=1)
def
test
(x,y,z):
print(x)
print(y)
print(z)
#test(1,y=2,z=3)#正確
test(1,z=3,y=2)#正確
#test(x=1,2,z=3)#報錯,因為不知道中間的2到底是應該給誰
傳遞的引數不固定,使用引數組可以通過以下這種方式:
*args:把n個位置引數轉換成元組
def
test
(*args):
print(args)
test(1,2,3,4,5)#當傳遞不固定的引數,使用這種方式可以把不固定的引數構成乙個元組
test(*[1,2,3,5,5])# *args=*[1,2,3,5,5],即args=[1,2,3,5,5]
def test(x,*args)
print(x)
print(*args)
test(1,2,4,5,6,7,8)#第乙個數始終是1,後面就都是args
**kwargs:把n個關鍵字引數轉換成字典的方式
def
test
(**kwargs):
print(kwargs)#列印的字典方式
print(kwargs['name'])#以字典的形式進行列印
print(kwargs['age'])
print(kwargs['***'])
test(name="jorocco",***="man",age="23")
test(**)#這種呼叫方式也可以
結果:
位置引數和引數組的結合
def
test2
(name,**kwargs):
print(name)
print(kwargs)
test2('jorocco',***="man",age="23")
結果:
位置引數,預設引數,關鍵字引數的結合
def
test3(name,**kwargs,age=19)#這種寫法錯誤,引數組只能放在最後,不然的話判斷不了引數組用哪幾個引數
def
test3
(name,age=19,**kwargs):
print(name)
print(age)
print(kwargs)
test3('jorocco',***='m',hobby='basketball')
test('jorocco',***='m',hobby='basketball',age=23)#這種也行
test('jorocco',3,***='m',hobby='basketball')#這種也行
test('jorocco',3,***='m',hobby='basketball',age=23)#這種就不行
修改全域性變數
全域性變數的字串和整數在函式裡面需要顯示宣告(global)全域性變數才能被被修改,列表、字典、集合、類則不需要
name1="jorocco"
#全域性變數,在整個程式中都有效
defchange_name
(name):
global name1#要修改全域性變數需要先宣告
print("before change",name)
name1="morocco"
print("after change",name1)
change_name(name1)
print(name1)#全域性變數被修改
修改全域性變數的列表:
高階函式高階函式就是把函式名當做實參傳給函式且返回值中包含函式名
def
add(x,y,f):
return f(x)+f(y)
res=add(3,-6,abs)
print(res)
匿名函式匿名函式的作用:一般用在只需要呼叫一次就釋放的只有三元運算的場景,當有for迴圈等邏輯運算的時候,匿名函式就不能實現。
舉例說明:
cal=lambda x:x+2
print(cal(3))
python的記憶體**機制:
函式即「變數」,意思是函式名是變數,相當於門牌號,和x、y一樣,都是變數,當我們定義乙個變數或函式時,記憶體會開闢乙個記憶體空間將具體的數字和函式體存入記憶體中,並將x、y或函式體名稱作為該記憶體的門牌號,而對於匿名函式而言也是同樣的,當門牌號沒有了,該記憶體就會被**,即1和函式體都被銷毀。python的記憶體**機制最關鍵的是:依門牌號而定,門牌號有則記憶體中的內容在,無,則記憶體被銷毀**。
Python基礎程式設計 函式結構
函式是對動作的封裝 函式的定義 def 函式名 函式提 pass 函式的執行 函式名 形參 def hanshu aaa 引數相當於變數來接受 v 11,22,33 print v aaa hanshu 1 實參函式的返回值用return表示 結束函式。l1 1,2,3 def new len pr...
python基礎函式式程式設計(十七)
概念 包括lambda函式的程式設計 高階函式變成 print sum 1,2,3 def test x,f return f x x 1,2,3 print test x,sum lamda匿名函式 def test x,y return x 2 y 這個lamda實現的函式和上面的函式是等價的 ...
Python基礎程式設計 十三 函式1
本篇文章主要是對python學習時的一些總結,作為學習筆記記錄。函式是定義好的,可以重複使用的,具有特定功能的 塊 對於程式設計來說,使用函式的優點主要有 函式定義具有一定的規則 def func var1,var2 param var1 param var2 return return expre...