當形參如*arg時表示傳入陣列,當形參如**args時表示傳入字典。
def myprint(*commends,**map):
for comm in commends:
print comm
for key in map.keys():
print key,map[key]
myprint("hello","word",username="tian",name="wei")
輸出:hello
word
username tian
name wei
python中定義乙個函式,可以通過正常的只傳入值或key-value的方法呼叫。但是如果第乙個時引數傳入的是key-value的方法,那麼後面www.cppcns.com的必須都是key-value方法,如果第乙個不是,那麼後面的可以根據情況再傳入值就可以了。
例子如下:
def parrot(voltage="fff",state='a stiff',action='voom',type='norwegian blue'):
print "-- this parrot wouldn't", action,
print "if you put", voltage, "volts through it."
print "-- lovely plumage, the", type
print "-- it's", state, "!"
parrot(1000)#可以
parrot(action = 'vooooom', voltage = 1000000)
#可以,都是key-value方法
parrot('a thousand', state = 'pushing up the daisies')
#可以,第乙個實參為直接傳入法,後面無所謂了
parrot('a million', 'bereft of life', 'jump')
#可以,都是傳值,而且由於形參都有預設值,則按順序乙個個替換
parrot(voltage="33","ff","abc")
# 不可以,第乙個為key-value傳值法,以後的都必須是
python新手入門,在python中函式定義主要有四種方式:
① f(arg1,arg2,...),最常見的定義方式,乙個函式可以定義任何個引數,每個引數間用逗號分割,用這種引數在呼叫的時候必須在函式名後面的小括號中提供個數相等的值(實參),並且順序必須相同,形參與實參一一對應
def a(x,y):
print x,y
呼叫a函式,a(1,2)則x=1,y=2,如果a(1)或者a(1,2,3)則會出錯
② f(arg1,arg2=value2,...agrn=valuen),則將為函式提供預設值。
def a(x,y=3):
print x,y
呼叫該函式,www.cppcns.coma(1,2)則x=1,y=2,如果a(1)不會導致錯誤,此時x=1,y=3,y值將使用預設值,a(y=4,x=2)同理
可變引數:
③ f(*arg1),以乙個*加形參的方式來表示函式的實參個數不確定,=0,採用這樣的方式定義函式,在函式內部將以實參名的方式構建乙個元組(tuple)
def a(*x):
# 定義乙個名為x的元組
def a(*t):
print x
>>>a(1)
(1,)
>>>a()
none
>>>a(1,2,3)
(1,2,3)
遍歷該元組(計算總和)的一種方式,此時r定義為一元組:
def y(*r):
x = 0
for t in r程式設計客棧:
x += t
print x
④ f(**arg)形參名前加2個**表示在函式內部將被存放在以形參名為識別符號的dictionary,這時呼叫將使用arg1=valucpkfbwore1,arg2=value2...
程式設計客棧def a(**b):
print b
>>>a()
none
>>>a(x=1,y=2)
#注意遍歷返回的順序與形參位置順序相反
>>>a(1,2) #error
可通過以下方式來獲取預期鍵值對,如果形參是未定義'y'的鍵,將返回none
def a(**x):
print x.get('y')
>>>a(x=1,y=2)
2 >>>a(x=1)
none
>>>a(x=1,b=2)
none
python引數呼叫過程按照以上四種方法優先順序依次降低。
①方式解析,然後是②中的arg=value方式,再分別按照③>④優先順序傳參
這是自己第乙份通過blog整理的學習筆記,希望對自己,對瀏覽至此的各位朋友有所幫助,以上函式命名不符合規範,僅用於簡單標識說明,使用python 2.6.2
本文標題: python傳遞引數方式小結
本文位址:
python引數傳遞方式
如果函式接收到的引數是乙個可變物件 類型別,列表,字典 就會改變物件的原始值。如果函式接收到的引數是乙個不可變物件,即基本資料型別 數值型,字串,布林 就不會改變物件的原始值。無論什麼引數,都是傳引用,只不過基本資料型別的賦值其實是重新構造並指向了乙個新的物件,記憶體位址不一樣,可以用id 來查詢記...
python引數傳遞方式
python中一切皆物件,函式中引數傳遞的是物件的引用。1在函式中改變變數指向的物件,即指向不同物件。當在函式中修改傳遞進來的變數指向另乙個物件時,實參的物件不會改變。def fun num,l,d num 123 l 1,2,3 d print inside num f,l s,d s num,l...
Python 函式引數傳遞方式
引數 自變數 在python裡都是按引用傳遞,也就是傳遞的是變數位址,變數就是位址,沒有型別,而關聯的物件是有型別的 但是對於不可變變數,在函式內修改會申請新的記憶體空間,所以對外層函式沒有影響,對於list變數,相當於操作同一塊記憶體,則會影響外層函式。usr bin python 可寫函式說明 ...