【Python學習】函數參數傳遞方法四種(位置,關鍵字,默認值,包裹位置,包裹關鍵字傳遞)

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)    #把元組解包 此時相當於位置參數傳遞

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章