python學習之第十六課時--函數的作用及定義
例子:
當我們知道半徑r的值時,就可以根據公式計算出面積,假設我們需要計算3個不同大小的圓的面積:
#!/usr/bin/env python # -*- coding:utf-8 -*- r1=2.34 r2=7.28 r3=10.32 s1=3.14*r1*r1 s2=3.14*r2*r2 s3=3.14*r3*r3
當代碼有規律的重復的時候,每次寫3.14*x*x不僅很麻煩,而且如果要把3.14改成3.14159的時候得全部替換
有了函數,我們不再每次寫s=3.14*x*x,而是寫成更有意義的函數調用s=area(x),而且函數area本身只需要些一次,就可以多次調用
抽象是數學中非常常見的概念,舉個例子
計算數列的和,比如1+2+3+.....+100,寫起來十分不方便,於是數學家發明了求和符號Σ,可以把1+2+3+...100叫作:
這種抽象記法非常強大,因為我們看到Σ就可以理解成求和,而不是還原成低級的加法運算
寫計算機程序也是一樣,函數就是最基本的一種代碼抽象的方式
函數最重要的目的是方便我們重復調用相同的一段程序
Python不但能非常靈活地定義函數,而且本身內置了很多有用的函數,可以直接調用
函數的定義
在python中,定義一個函數要使用def語句,依次寫出函數名,括號,括號中的參數和冒號,然後在縮寫塊中編寫函數體,函數的返回值用return語句返回
例如:
我們以自定義一個求絕對值的Numbers函數為例
#!/usr/bin/env python # -*- coding:utf-8 -*- def Numbers(x): if x>=0: return x else return -x #此函數的功能是求兩個數的平方和 #首先def,這個關鍵字通知python,我要定義一個函數,Numbers是函數名,括號中的x的函數的參數,是對函數的輸入 #參數可以一個或多個,也可以完全沒有,但是括號要保留 if x>=0: #表示這一句判斷x的大小,從而運算那個語句 else: #如果if後條件為假執行這一語句 return x #返回c的值,也就是輸出的功能,python的函數允許無返回值,也就是不用return return a,b,c #相當於return (a,b,c)
函數體內部的語句在執行時,一旦執行到return語句時,函數就執行完畢,並將結果返回
如果沒有return語句,函數執行完畢後也會返回結果,只是結果為None,Return None可以簡寫成return
在python中,當程序執行到return的時候,程序就停止執行函數內余下的語句
None是python中的一個特別的數據類型,用來表示什麽都沒有,相當於c語言的NULL,NOne多用於關鍵字參數傳遞的默認值
函數的調用
要調用一個函數,需要知道函數的名稱和參數,比如求絕對值的函數abs。它接收一個參數
可以直接從python的官方網站查看文檔:
http://docs.python.org/2/library/function.html#abs
也可以在交互命令行通過help(abs)查看abs函數的幫助信息
函數的返回值
返回單值
#!/usr/bin/env python # -*- coding:utf-8 -*- def Numbers(x): if x>=0: print(x) else: print(-x) Numbers(-5)
返回多值
math包提供了sin()和cos()函數,我們先用import引用它
#!/usr/bin/env python # -*- coding:utf-8 -*- import math def Move(x,y,step,angle): xx=x+step*math.cos(angle) yy=y-step*math.sin(angle) return xx,yy x,y=Move(100,100,60,math.pi/6) print x,y 打印 151.961524227 70.0
其實這是一種假象,python函數返回的仍然是單一值
#!/usr/bin/env python # -*- coding:utf-8 -*- import math def Move(x,y,step,angle): xx=x+step*math.cos(angle) yy=y-step*math.sin(angle) return xx,yy print(Move(100,100,60,math.pi/6)) #打印 (151.96152422706632, 70.0)
用print打印返回結果,原來返回值是一個tuple
註:在語法上,返回一個tuple可以省略括號,而多個變量可以同時接受一個tuple,按位置賦給對應的值,所以python函數返回多值其實就是返回一個tuple,但寫起來更方便
python學習之第十六課時--函數的作用及定義