固定引數和可變引數的區別

2021-10-09 06:02:59 字數 1211 閱讀 5042

定義函式時,引數可以有兩種:

一種是在參數列中寫明引數名key的引數,固定了順序和數量的固定引數:

def func(key1, key2, key3, …)

def func(key1, key2=value, …)

一種是定義時還不知道會有多少引數傳入的可變引數:

def func(*args): #不帶key的多個引數

def func(**kwargs): #key=value形式的多個引數

示例:固定引數:

def func_test(key1, key2, key3=23):

print(

"key1=%s, key2=%s, key3=%s" % (key1, key2, key3))

func_test(

'v1', 'v2'

)func_test(

'a', 'b', 768)

func_test(key2=

'kk', key1=

'k')

可變引數:

#可隨意傳入0個或多個無名引數

def func_test2(*args):

for arg, i in zip(args, range(len(args))

): print(

'arg%d=%s' % (i, arg))

func_test2(

'a', 'b', 23, true)

#可隨意傳入0個或多個帶名引數

def func_test3(**kwargs):

for key, value in kwargs.items(

): print(

'%s=%s' % (key, value))

func_test3(name=

'tom', sep=

'sofie', age=23)

呼叫函式的時候可以傳進兩種引數:

一種是沒有名字的位置引數:

func(arg1, arg2, arg3, …)

會按照前後順序對應到函式的引數傳入

一種是帶key的關鍵字引數:

func(key1=arg1, key2=arg2, …)

由於指定了key可以不按照順序對應

注意:如果混用位置引數必須在前,關鍵字引數 必須在後

可變引數(實現引數個數不固定)

方法一 params 參考msdn 方法二 將引數封裝為乙個物件 方法三 public static void msgfounction string username,bool ischina true 設定方法引數預設值,呼叫時 msgfounction 張三 為了確定方法是執行什麼操作,有時候...

python中的可變引數和不可變引數

知識點 python中,萬物皆物件。python中不存在所謂的傳值呼叫,一切傳遞的都是物件的引用,也可以認為是傳址。python在heap中分配的物件分成兩類 可變物件和不可變物件。所謂可變物件是指,物件的內容可變,而不可變物件是指物件內容不可變。不可變 immutable int 字串 strin...

可變引數列印 解析可變引數

1.的一般用法 define str s s define cons a,b int a e b int main 2.接受,列印可變引數 參考 glibc庫的bebug函式 define printf fmt,args.printf fmt,args 使用方法 define pr debug fm...