2016年9月21日 星期三

【Mac/Python3】基礎入門(8) - function


使用 def 來開一個新的 function
import math 
def test(x): 
print(“x=“,x) 
x = math.pi 
print(“x=“,x) 
return x 

y = test(“test”) 
print(“y=“,y)

result:
x=test
x= 3.141592653589793

y= 3.141592653589793

因為使用到 math 的 pi function,所以我們需要在一開頭加一句 import math
def 後面的就是 function 名稱 
() 裡的就是參數,意思是 call 這個 function 時需要 pass 什麼過去
return 就是返回 value 給 call function 的人
如果沒有 return 這一句


default 是 return None 的


除此之外
function 是可以返回多個數值
def test(): 
x = 1 
y = 2 
return x, y 

a, b = test() 
print(“a, b=“,a,b)


result: a, b= 1 2



可變參數:

我們可以傳 list 或 tuple 進去的

第一個方法是:
def clac(numbers): 
print(numbers)
>>>calc([1,2]) 
[1,2]

第二個方法是:
只要 function 的參數前面加個 *
def calc(*numbers): 
print(numbers) 
>>> calc(1,2) 
(1,2)

如果本來已有個list
>>> n = [1,2] 
>>> calc(n[0],n[1]) 
(1,2)
這樣也是可以的,只是當list大了的時候會很不方便吧
所以 Python 是可以讓我們直接傳 list 進去的,只要在 list 前加個 *
>>> n = [1,2] 
>>> calc(*n) 
(1,2)

*n 表示把 n 這個 list 的所有元素作為可變參數傳進去


關鍵字參數:

關鍵字參數允許我們傳入0個或任意個含參數名的參數
這些參數會內部組裝成一個 list 
def person(name, age, **kw) 
print(’name:’,name,’age:’,age,’other:’,kw) 
>>> person(‘nightsnow’,15) 
name: nightsnow age: 15 other: {}

可傳入任意個數參數
>>> person(‘nightsnow’,15,city=“HK”,gender=“F”) 
name: nightsnow age: 15 other: {‘city’: ’HK’, ‘gender’: ‘F’}

又或是如果我們已有個 dict
>>> extra = {‘city’: ’HK’, ‘gender’: ‘F’} 
>>> person(‘nightsnow’,15,**extra) 
name: nightsnow age: 15 other: {‘city’: ’HK’, ‘gender’: ‘F’}

**extra 表示把 extra 這個 dict 的所有 key-value 用關鍵字參數傳入到 **kw 中
kw 將直接獲得一個 dict
kw 只是得到 extra 的拷貝,kw 的改動並不會影響到 extra



*注意不要少寫了冒號 : 

*總結:
*  是 可變參數,接收的是一個 tuple

** 是 關鍵字參數,接收的是一個 dict 

沒有留言:

張貼留言