Python 中使用 def 來定義函數(shù)。依次是 def 函數(shù)名,、括號,、括號中的參數(shù)及結(jié)尾的冒號,另起一行縮進寫函數(shù)體,函數(shù)的返回值用 return 語句返回,。 如: def func(參數(shù)): 函數(shù)體 return 調(diào)用函數(shù)時會對傳入的參數(shù)進行自動檢查,,包括參數(shù)的類型及參數(shù)的數(shù)量,如果不符合要求會拋出 TypeError 異常,。 參數(shù)的類型可分為: 1,、必選參數(shù) 2、默認參數(shù) 3,、可變參數(shù) 4,、關(guān)鍵字參數(shù) 函數(shù)中的參數(shù)順序一定要按以上順序排列。 下面通過示例來更好的理解函數(shù)的各類參數(shù): 定義函數(shù): >>> def func(hostname,os='CentOS',*role,**other): ... print('Hostname : %s\nOS : %s\nRole : %s\nOther : %s'%(hostname,os,role,other)) ... >>> 其中 hostname 為必選參數(shù),,os為默認參數(shù),,role為可變參數(shù),other為關(guān)鍵字參數(shù),。 *和**分別為可變參數(shù)和關(guān)鍵字參數(shù)前綴,,可變參數(shù)類型為列表或元組,關(guān)鍵字參數(shù)類型為字典。 演示: 1,、 >>> func('web1') Hostname : web1 OS : CentOS Role : () Other : {} >>> 調(diào)用之前定義的 func 函數(shù),,并傳入'web1'必選參數(shù)。在輸出的結(jié)構(gòu)中 OS 顯示為默認的 CentOS,。 2,、 >>> func('web2','ubuntu') Hostname : web2 OS : ubuntu Role : () Other : {} >>> 調(diào)用之前定義的 func 函數(shù),并傳入'web2'必選參數(shù),,默認參數(shù)用 'ubuntu' 替換,。 3、 >>> func('db-1','redhat','MySQL','Redis') Hostname : db-1 OS : redhat Role : ('MySQL', 'Redis') Other : {} >>> 調(diào)用之前定義的 func 函數(shù),,并傳入必選參數(shù),,默認參數(shù),以及兩個可變參數(shù),??勺儏?shù)類型可以為列表或元組,,如下: >>> func('db-1','redhat',*['MySQL','Redis']) Hostname : db-1 OS : redhat Role : ('MySQL', 'Redis') Other : {} >>> >>> func('db-1', 'redhat',*('MySQL', 'Redis')) Hostname : db-1 OS : redhat Role : ('MySQL', 'Redis') Other : {} >>> 當傳入的可變參數(shù)是列表或元組時要在前加上*,對應(yīng)的結(jié)果輸出為元組,。 4,、 >>> func('db-3', 'redhat','MySQL', 'Redis', ip='172.16.100.3') Hostname : db-3 OS : redhat Role : ('MySQL', 'Redis') Other : {'ip': '172.16.100.3'} >>> >>> func('db-3', 'redhat','MySQL', 'Redis', ip='172.16.100.3', m_port=3307) Hostname : db-3 OS : redhat Role : ('MySQL', 'Redis') Other : {'ip': '172.16.100.3', 'm_port': 3307} >>> >>> func('db-3', 'redhat','MySQL', 'Redis', **{'ip' : '172.16.100.3', 'm_port' : 3307}) Hostname : db-3 OS : redhat Role : ('MySQL', 'Redis') Other : {'ip': '172.16.100.3', 'm_port': 3307} >>> 調(diào)用之前定義的 func 函數(shù),并傳入必選參數(shù),,默認參數(shù),,兩個可變參數(shù)及關(guān)鍵字參數(shù)。 當傳入的關(guān)鍵字參數(shù)是字典時要在前加上**,,對應(yīng)的結(jié)果輸出為字典,。 當然以上測試中的列表、元組及字典可以先定義再引用: >>> db_3_o={'ip' : '172.16.100.3', 'm_port' : 3307} >>> db_3_r=['MySQL', 'Redis'] >>> func('db-3', 'redhat',*db_3_r, **db_3_o) Hostname : db-3 OS : redhat Role : ('MySQL', 'Redis') Other : {'ip': '172.16.100.3', 'm_port': 3307} >>> 原文地址:http://www./error/108-1-1.html |
|