Function
Function函數
- 撰寫一次之後可不斷重複使用的程式碼
- 更好管理及維護
def mytest(): //can have no argument
print('hi')
def myFunction(name): //can have argument
print('hello'+name)
myFunction('john')
def requiredArg(name, grade): //can have more than 1 argument
print(name + ' math grade is ' + %grade)
requiredArg('peter',78)
def defaultArg(name, msg='morning')://can have default arguments
print(name + msg)
defaultArg('celine')
def variousArg(*meals): //can be 1 or more arguments
for meal in meals:
print(meal)
variousArg('pasta','steak','burger')
def lunch(**mydict): //can accept dictionary as argument
print('your lunch include: ',mydict)
dinner('entree':'steak','drink':'wine','desert':'tiramisu')
函數回傳值
- 函數可以設定回傳值(return)
- 回傳值可以是一個或多個
def returnMe():
a='hi'
b='you'
return a,b
returnMe()
__main__主程式
- 當 Python 檔案(模組、module)被引用的時候,檔案內的每一行都會被 Python 直譯器讀取並執行
- 若要在被引用時,不該執行的程式碼不被執行?當然就是靠 name == 'main'做判斷
def main():
print('main function here!')
def printHello():
print('Hello Here!')
if __name__ == "__main__": //if this is the main thread, execute this function
main()
Builtin Function 內建函數
- Python程式語言內建不少函數
abs(-1) //get the absolute value
round(3.4) //round to nearest whole number
pow(3,2) //get 3*3 = 9
divmod(5,2) //返回商數和餘數 (2,1)
list=[1,2,3,4,5]
sum(list) //加總list的內容 = 15
min(list) //取得最小值
max(list) //取得最大值
Global and local 全域變數與區域變數
- 全域變數:任何區塊的程式碼都可存取的變數
- 區域變數:只有在程式區塊內才可存取的變數
c=99
def sum(a,b):
global c //需要宣告要用到全域變數
sum = a+b+c
return sum
print(sum(1,2))
Lambda 匿名函數
- 可以使用一行就完成的函數定義
- 更精簡的函數寫法
x = lambda a : a*2
print(x(5))
filter函數
- 可篩選出符合條件的元素
mylist = [1,2,3,4,5,6,7,8,9,10]
oddonly = list(filter(lambda x: (x%2==1), mylist)) //只挑出奇數(odd)指不能被2整除的整數
print(oddonly)
map函數
- Map函數:可以將每個元素做轉換
mylist = [1,2,3,4,5,6,7,8,9,10]
sqrtlist = list(map(lambda x: x**2, mylist)) //將list的每個元素都做平方,然後顯示出來
print(sqrtlist)
reduce函數
- Reduce函數:可以將多個元素拆解做合併
from functools import reduce //需要引reduce入工具
mylist = [1,2,3,4,5]
reduced = reduce(lambda x,y : x+y, mylist) //將每兩個元素加總後變成第一個元素,在跟後面一個元素加總
// (((((1+2)+3)+4)+5) = 15