2016年8月17日 星期三

function

function是可重複使用的程式碼片段

用關鍵字def來定義function


def functionName ():
    #function body
#out of function

在定義fuction時的變數叫"parameters"
呼叫function實用的參數叫"arguments"

function中的變數若未特別聲明,都是local的,與function外部的同名變數無關
甚至改變傳入的變數值也不會對外部造成影響
ex:
def testFun(x):
    x = 100
x = 0
testFun(x)
print(x) # get x = 0
但若function內尚未指定一變數,卻去提取該變數值,會提取到global範圍內的變數。但若提取後又指定同一變數,會產生error。
因此,最好還是在提取時 以global 明確指定該變數為global
ex:
def testFun(x):
    global x #即使沒有宣告global仍可執行print()
    print(x)
    x = 100 #若未宣告 global 會發生與上一行的衝突

可以用global x,y,z 一次指定多個global變數

選擇性參數
def prints(mes, times = 1)
    print(mes, times)
prints(hi) #>>>hi
prints(hi,2) #>>>hihi
選擇性參數必須在變數列的尾段
def fun(p1 = 1, p2): 是不合法的

以名稱指定參數
def f(p1, p2 = 1, p3 =1):
合法呼叫方式有 f(10),f(3,5), f(10, p3 = 5), f(p3 = 5, p1 = 10)

任意變數數量
def fun(*posPar, **namedPar):
    for par in posPar:
        print(par)
    for key , val in namedPar.items():
        print("key:{} vlaue:{}".format(key,val))
fun(1,2,3,a =4,b=5,c=6)
#get >>>
1
2
3
key:c vlaue:6
key:b vlaue:5
key:a vlaue:4
未指定的位置變數儲存到posPar的list中,未指定的指名變數儲存到namedPar的Dictionary中

function注解
在function後緊接的第一個程式區塊字串
註解的慣例是第一行以大寫開頭,句號結尾
第二行空白
接著寫詳細註解
要查詢詳細註解可以呼叫fun.__doc__
簡略註解(第一行)會在IDLE輸入"functionName(" 時
def fun():
    '''This is a test fun.

test me...'''
    pass
print(fun.__doc__)
or
def fun():
    "This is a test func.\n\nTest mee."
    pass
print(fun.__doc__)
help(fun)會回傳fun.__doc__


沒有留言:

張貼留言