1. 位置傳遞:
#--coding:utf-8-- def send(name,address): return 'package is sent to %s, located in %s' %(name, address) print(send('winnie','shanghai'))
2. 關鍵字傳遞
def run(name,length, date): return '%s ran %s on %s' %(name,length,date) #關鍵字傳遞時,可以無視參數順序,名字對了就行。 print(run(length = '5km',date ='11/29/2016',name = 'winnie')) #關鍵字和位置混用,但要注意位置參數要出現在關鍵字前面。 如果不,那編譯器不知道除了幾個有名字的,位置的順序。 print(run('winnie',length = '5km',date ='11/29/2016'))
winnie ran 5km on 11/29/2016 winnie ran 5km on 11/29/2016 [Finished in 0.2s]
3. 默認值參數
# 3. 默認值參數: 可以給出參數默認值 # 我們跑團每週二的例行約跑 def runWeekly(name,length, time = 'Tuesday 5:00PM'): return '%s ran %s on %s' %(name,length,time)
調用:
print(runWeekly('jin','5km')) print(runWeekly('jin','5km','Wednesday')) print(runWeekly('jin',time = '5km','Wednesday')) #Error
File "C:\pytest\Sele\tem1111.py", line 20 print(runWeekly('jin',time = '5km','Wednesday')) SyntaxError: non-keyword arg after keyword arg [Finished in 0.2s with exit code 1]
4. 包裹傳遞
# 4. 包裹傳遞 (*/**) # 參數被 collect收集,type: tuple def subselect(*collect): print collect print type(collect) # 參數被 aa收集,type: dict def packing(**aa): #print test print type(aa) print aa
調用:
subselect(['ppe-test-1','dddd']) packing(a=1,b=2,sub=[11,22])
輸出:
<type 'tuple'>
<type 'dict'>
{'a': 1, 'b': 2, 'sub': [11, 22]}
[Finished in 0.2s]
5. 解包
# 5.Unpacking with */** tuple1 = ['test1','test2','test3'] dictionary1 = {'at':'88wi','b':'secondParam','third':'winnie'} print 'dictionary1 ', dictionary1 def useDict(at,b,third): print at , b ,third useDict(**dictionary1) #把字典參數解包 此時相當於關鍵字參數傳遞 名字和函數定義的參數名必須要一一對應 useDict(*tuple1) #把元組解包 此時相當於位置參數傳遞