今天學(xué)習(xí)到python函數(shù)傳遞的一些內(nèi)容肆资,和其他語(yǔ)言的參數(shù)傳遞有很多類(lèi)似的地方非春,也有很多是python語(yǔ)言專(zhuān)有的一些特性峻贮,記錄下垫竞,我對(duì)python函數(shù)參數(shù)傳遞的一些認(rèn)知澎粟。
函數(shù)
python函數(shù)是一些已經(jīng)記錄好的,可以重復(fù)使用的一些代碼欢瞪。函數(shù)的定義語(yǔ)句如下所示:
def functionname( parameters ):
"函數(shù)_文檔字符串"
function_suite
return [expression]
在函數(shù)的使用中活烙,參數(shù)是必不可少的部分,讓我們來(lái)看下遣鼓,幾乎所有語(yǔ)言都擁有的函數(shù)傳遞是一種傳遞方式是怎么樣的:
def hello(name):
print "hello"+name
hello("john")
在這一段函數(shù)之中瓣颅,hello函數(shù)接受一個(gè)參數(shù)john譬正,最終函數(shù)也會(huì)輸出hello,john為結(jié)果。
當(dāng)然健民,函數(shù)自然也支持多個(gè)參數(shù)的傳遞
def printinfo( name, age ):
"打印任何傳入的字符串"
print "Name: ", name;
print "Age ", age;
return;
#調(diào)用printinfo函數(shù)
printinfo( 'miki',50);
這個(gè)特性顯而易見(jiàn)秉犹,而且在其他語(yǔ)言之中也非常常見(jiàn)稚晚,下面讓我們看下客燕,python之中特有的一些機(jī)制,首先是參數(shù)順序的轉(zhuǎn)換
def printinfo( name, age ):
"打印任何傳入的字符串"
print "Name: ", name;
print "Age ", age;
return;
#調(diào)用printinfo函數(shù)
printinfo( age=50, name="miki" );
函數(shù)順序轉(zhuǎn)換完成之后也搓,函數(shù)一樣能被調(diào)用。得到一樣的輸出結(jié)果幔摸,這在其他很多語(yǔ)言中并不具備這樣的功能
python的變量傳遞功能并不僅僅只限于這樣的功能既忆,當(dāng)加了星號(hào)(*)的變量名會(huì)存放所有未命名的變量參數(shù)嗦玖。選擇不多傳參數(shù)也可。如下實(shí)例
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 可寫(xiě)函數(shù)說(shuō)明
def printinfo( arg1, *vartuple ):
"打印任何傳入的參數(shù)"
print "輸出: "
print arg1
for var in vartuple:
print var
return;
# 調(diào)用printinfo 函數(shù)
printinfo( 10 );
printinfo( 70, 60, 50 );
python函數(shù)參數(shù)傳遞還有著將字典或者列表傳遞的過(guò)程和其反轉(zhuǎn)過(guò)程:
#!/usr/bin/python
def story(**kwds):
return 'Once upon a time there was a '\
'%(job)s called %(name)s.'% kwds
def power (x,y,*others):
if others:s print 'Received redundant parameters:'.others
return pow(x,y)
def interval(start,stop=None,step=1):
'Imitates range() for step > 0'
print start,stop
if stop is None:
start,stop = 0,start
print start,stop
result = []
i = start
while i < stop:
result.append(i)
在上述例子中庆亡,使用**kwd 參數(shù)捞稿,當(dāng)我們傳遞的內(nèi)容是里面所需要的job和name的時(shí)候拼缝,
print story(job = 'king', name ='gumby' )
參數(shù)會(huì)自動(dòng)往里面?zhèn)鬟f
這個(gè)特性特別有意思
args = {name:'aa',job='aa'}
print story(**args)
當(dāng)往里面?zhèn)鬟f一個(gè)字典時(shí)咧七,結(jié)果和單個(gè)參數(shù)的鍵值對(duì)類(lèi)似。