1. 程式人生 > >python學習之第十六課時--函數的作用及定義

python學習之第十六課時--函數的作用及定義

數據 ocs 當我 關鍵字 utf-8 例如 log 代碼 默認

例子:

當我們知道半徑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的時候,程序就停止執行函數內余下的語句

Nonepython中的一個特別的數據類型,用來表示什麽都沒有,相當於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學習之第十六課時--函數的作用及定義