python 定義方法時,會出現某些傳入引數的數量不確定的情況,此時需要使用到這兩種符號來處理:
例如:定義乙個累加器,輸入的引數數目可變的情況(*)
一般定義方法時為以下的方式,
兩個數字累加:
def add(param1, param2):
print(param1+param2)
三個數字累加:
def add(param1, param2, param3):
print(param1+param2+param3)
現在可以使用*來處理這個問題:
def add(*params):
sum = 0
for item in params:
sum += item
print(sum)
呼叫此方法:add(1, 2, 3, 4)
另外,還有另一種傳參的方式
現在有一陣列:arr = [1, 2, 3]
呼叫方法:add(*arr)
注意:傳入的params引數可為空,則add()返回就是0
例如:定義錄入學校人員的身份資訊的方法,由於學生有成績資訊,老師有職稱、工資等資訊;所以定義方法時不能確定輸入的引數名,此時可以使用**來定義引數名(**)
def addinfo(name, age, **others):
info = "name: %s, age: %s" % (name, age)
for item in others:
info = info + ", " + item + ": %s" % others[item]
print(info)
呼叫此方法:addinfo("小明", 12, score=98)
另外,呼叫此方法還有另一種方式:
現在有一字典值:data =
呼叫方法:addinfo("小明", 12, **data)
上面用到*和**來傳入陣列和字典的方式,相當於把陣列和字典裡面的項解析出來逐個傳入到方法中,對於接受到的不確定的陣列變數和字典變數,這種方式的傳參是很有用的
帶有可變引數的方法
可變引數 在看其他人寫的 時看到了這個 這是個帶可變引數的方法。有時我們實現乙個方法時不能確定呼叫它時要傳進來幾個引數,多了少了都會產生錯誤,這時可變引數就能體現出他的優點,用三個點代替不確定的引數,呼叫時就可以傳任意個數引數值。我們先來說一下引數的儲存,函式 方法 引數是以資料結構 棧的形式訪問,...
反射帶有out引數的方法
public int getflag out int result 使用下面的方法來反射 system.type mytype typeof testreflection 反射生成改型別的物件例項 object obj mytype.invokemember null,bindingflags.cr...
python之帶有引數的裝飾器
乙個小demo def set level level num defset func func def call func args,kwargs if level num 1 print 許可權級別1,驗證 elif level num 2 print 許可權級別2,驗證 return func...