Python學習筆記(4)——函數

函數

一、函數的定義和調用
函數是一個能完成特定功能的代碼塊,可在程序中重複使用,減少程序的代碼量和提高程序的執行效率。
函數的定義:

---返回值不是必須的,如果沒有return語句,則Python默認返回值None 

--參數列表可以由多個、一個或零個參數組成。
--圓括號是必不可少的,即使沒有參數也不能沒有它;不要忘記圓括號後面的冒號。
--函數體一定要注意縮進。
--“形參”和“實參”。
--return語句的作用是結束函數調用,可以出現在函數體的任意位置。

二、調用函數的形式

三、函數的參數
--在定義函數時,我們可以用賦值符號給某些形參指定默認值,這樣當調用該函數的時候,如果調用方沒有爲該參數提供值的話,則使用默認值。
--如果調用該函數的時候爲該參數提供了值的話,則使用調用方提供的值——像這樣的參數我們稱之爲缺省參數
--默認參數必須在所有標準參數之後定義


--需要一個函數能處理比當初聲明時更多的參數。這些參數叫做不定長參數。加了星號(*)的變量名會存放所有未命名的變量參數。

attention:
1、在一個函數中對參數名賦值不影響調用者。 
2、在一個函數中改變一個可變的對象參數會影響調用者,如列表,字典,數組等。


3、參數是對象指針,無需定義傳遞的對象類型。

四、匿名函數
1、用lambda關鍵詞能創建小型匿名函數。
2、Lambda函數能接收任何數量的參數但只能返回一個表達式的值
3、
匿名函數不能直接調用print,因爲lambda需要一個表達式。
4、lambda函數擁有自己的名字空間,且不能訪問自有參數列表之外或全局名字空間裏的參數。

example

五、局部變量和全局變量
1、在一個函數中定義的變量一般只能在該函數內部使用,這些只能在程序的特定部分使用的變量我們稱之爲局部變量
2、在一個文件頂部定義的變量可以供該文件中的任何函數調用,這些可以爲整個程序所使用的變量稱爲全局變量。 
3、如想在局部作用域中改變全局作用域的對象,必須使用global關鍵字。


六、函數的註釋說明—文檔字符串
在函數定義後緊跟的字符串會被認爲是函數的說明,使用help(函數名)可顯示出來。


七、常用函數
--abs(x):abs()返回一個數字的絕對值。如果給出複數,返回值就是該複數的模。

--callable(object):callable()函數用於測試對象是否可調用,如果可以則返回1(真);否則返回0(假)。可調用對象包括函數、方法、代碼對象、類和已經定義了“調用”方法的類實例。
 

--cmp(x,y) :cmp()函數比較x和y兩個對象,並根據比較結果返回一個整數,如果x<y,則返回-1;如果x>y,則返回1,如果x==y則返回0。

--isinstance(object,class-or-type-or-tuple) -> bool測試對象類型 isinstance(a,str)  


--divmod(x,y): divmod(x,y)函數完成除法運算,返回商和餘數。 

--pow(x,y[,z]) :pow()函數返回以x爲底,y爲指數的。如果給出z值,該函數就計算x的y次冪值被z取模的值。 

--len(object) -> integer :len()函數返回字符串和序列的長度

--min(x[,y,z...]) :返回序列或參數的最小值

--max(x[,y,z...]) :返回序列或參數的最大值

--range([lower,]stop[,step]) :range()函數可按參數生成連續的有序整數列表。 

--round(x[,n]) :round()函數返回浮點數x的四捨五入值,如給出n值,則代表舍入到小數點後的位數。 

--type(obj):type()函數可返回對象的數據類型。 

--xrange([lower,]stop[,step]):xrange()函數與range()類似,但xrnage()並不創建列表,而是返回一個xrange對象,它的行爲與列表相似,但是隻在需要時才計算列表值,當列表很大時,這個特性能節省內存。 


八、類型轉換函數
數值型
float(x) :把一個數字或字符串轉換成浮點數。 

hex(x) :把整數轉換成十六進制數。 

oct(x) :把整數轉換成八進制數。 

int(x[,base]) :把數字和字符串轉換成一個整數,base爲可選的基數。

complex(real[,imaginary]) :complex()函數可把字符串或數字轉換爲複數。 
eg:complex(“2+1j”) 、 complex(2,1)

long(x[,base]) long()函數把數字和字符串轉換成長整數,base爲可選的基數。


字符串
chr(i):chr()函數返回ASCII碼對應的字符串

ord(x):ord()函數返回一個字符串參數的ASCII碼或Unicode值 。

str(obj):str()函數把對象轉換成可打印字符串。 


序列對象
list(x) :list()函數可將序列對象轉換成列表 

tuple(x): tuple()函數把序列對象轉換成tuple 


九、序列操作函數
常用函數中的len()、max()和min()同樣可用於序列. 

filter(function,list):調用filter()時,它會把一個函數應用於序列中的每個項,並返回該函數返回真值時的所有項,從而過濾掉返回假值的所有項。

map(function,list[,list]):map()函數把一個函數應用於序列中所有項,並返回一個列表。 

reduce(function,seq[,init]) :reduce()函數獲得序列中前兩個項,並把它傳遞給提供的函數,獲得結果後再取序列中的下一項,連同結果再傳遞給函數,以此類推,直到處理完所有項爲止。  

zip(seq[,seq,...]) :zip()函數可把兩個或多個序列中的相應項合併在一起,並以元組的格式返回它們,在處理完最短序列中的所有項後就停止。 
舉例參考:https://www.cnblogs.com/frydsh/archive/2012/07/10/2585370.html

參考資料
中國科學院大學張老師講授的《Python科學計算與數據處理》ppt

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章