二、函式的使用和呼叫
函式是一段具有特定功能的、可重用的語句組,是一種功能的抽象,一般函式表達特定功能,可以降低編碼難度,可以**復用。
def
《函式名》
(引數)
:《函式體》
return
《返回值》
函式定義時,所指定的引數是一種佔位符;函式定義後,如果不經過呼叫,不會被執行。
函式定義時不會呼叫,呼叫時給出實際引數,替換定義中的形參。
def
《函式名》
(《引數》):
《函式體》
return
《返回值》
def(
《實際引數》
)
函式可以有引數,也可以沒有引數,但是必須保留括號。
def
《函式名》()
:《函式體》
return
《返回值》
函式定義時可以為某些引數指定預設值,從而構成可選引數,呼叫時不給可選引數傳遞值,則使用預設值。
def
《函式名》
(《非可選引數》
,《可選引數》):
《函式體》
return
《返回值》
收集引數:函式定義時可以設計可變數量的引數,就是不確定引數的總數量。
def
《函式名》
(《引數》
,*b)
:《函式體》
return
《返回值》
例如,python中定義min()
,max()
等函式都是用的可變數量引數。
def
fact
(n,*b)
: s =
1for i inrange(
1,n+1)
: s *= i
for item in b:
s *= item
return s
函式可以返回0個或者多個結果,其返回多個值時用的就是元組型別。
def
fact
(n,m=1)
: s =
1for i in
range(1
,n+1):
s *= i
return s//m,n,m
>>
> fact(10,
5)(725760,10
,5)>>
> a,b,c = fact(10,
5)>>
>
print
(a,b,c)
725760
105
程式中使用的變數為全域性變數,函式中間的引數和變數為區域性變數:
1)區域性變數是函式內部的佔位符,與全域性變數可能重名但是不同,函式內部運算結束之後,區域性變數就會被釋放。
2)通過global
在函式中使用全域性變數。
3)如果函式內部使用了組合資料型別為區域性變數且未真實建立,等同於全域性變數。但是如果函式內部真實建立了該區域性變數,那麼就為區域性變數。
>>
> ls =
['f'
,'f'
]>>
>
deffunc
(a):
return
>>
> func(
'c')
>>
>
print
(ls)
['f'
,'f'
,'c'
]
>>
> ls =
['f'
,'f'
]>>
>
deffunc
(a):
ls =
return
>>
> func(
'c')
>>
>
print
(ls)
['f'
,'f'
]
1)什麼是作用域:作用域類似與字典,對於乙個賦值語句x=1,x指向值1的乙個對映,通過內建函式vars可以返回這個字典。
除全域性作用域外,每呼叫乙個函式都會建立乙個區域性作用域。
>>
>
deffoo()
: x =42.
..>>
> x =
1>>
> foo(
)>>
> x
1
2)如何在區域性作用域中訪問全域性變數:讀取全域性變數的值通常不會有問題,但還是存在出現問題的可能性。如果有乙個區域性變數或引數與你要訪問的全域性變數同名,就無法直接訪問全域性變數,因為它被區域性變數遮住了。
可使用函式globals來訪問全域性變數。這個函式類似於vars,返回乙個包含全域性變數的字典。(locals返回乙個包含區域性變數的字典。)例如:
>>
>
defcombine
(parameter):.
..print
(parameter +
globals()
['parameter'])
...>>
> parameter =
'berry'
>>
> combine(
'shrub'
) shrubberry
3)關於作用域的巢狀:python函式可以巢狀,即可將乙個函式放在另乙個函式內。
使用乙個函式來建立另乙個函式:內部函式可以訪問外部函式的區域性作用域中的變數。
def
multiplier
(factor)
:def
multiplybyfactor
(number)
:return number * factor
return multiplybyfactor
>>
> double = multiplier(2)
>>
> double(5)
10>>
> triple = multiplier(3)
>>
> triple(3)
9>>
> multiplier(5)
(4)20
Python(4) 函式與模組
def hi print hello,world for i in range 0,4 1 hi def listsum l res 0 for i in l res res i return res l2 1,2,3,4,5,6,7,8,9,10 sum2 listsum l2 print sum...
python 4函式式程式設計
1 高階函式 變數可以指向函式。def add x,y,f 例如f引數為函式 編寫高階函式,就是讓函式的引數能夠接收別的函式。python內建了map 和reduce 高階函式。1.1 將list每項相乘 def f x return x x r map f,1,2,3,4,5,6,7 list r...
python 4輸入和輸出
4 輸入和輸出 4.1 輸出 1.普通的輸出 電力的輸出,音訊的輸出 2.軟體中輸出 例如登入是輸入使用者名稱和密碼,如果有乙個不正確,會出現乙個對話方塊,提示使用者重新輸入使用者名稱和密碼。3.python中輸出 列印提示print hello word 4.格式化的輸出 print hello ...