Python直接用字典陣列匯入到函式的非固定引數
正好是學logging模組的時候遇到的。程式碼是這樣的:
1
2
3
4
5
6
7
|
logging.basicConfig(filename = 'test.log' ,
level = logging.DEBUG,
format = '%(name)s %(asctime)s %(module)s-%(lineno)d [%(levelname)s]:%(message)s' ,
datefmt = '%Y-%m-%d %H:%M:%S' )
logging.warning( 'test warning' )
logging.info( 'test info' )
logging.debug( 'test debug' )
|
上面的logging.basicConfig()要一堆引數,而且實驗了一下,貌似必須得用關鍵引數,不能偷懶。於是好奇看了一下help
1
2
3
4
5
|
import logging
help (logging.basicConfig)
# 下面是help的頭2行,後面就不貼了 Help on function basicConfig in module logging:
basicConfig( * * kwargs) # 這裡原來用的是非固定引數
|
一看,整個就是非固定引數,那麼只能老實的一個一個寫了。但是一想,這裡**kwargs會把多傳入的關鍵引數變成一個字典,那麼問題來了:
既然要變成字典,那我直接定義個字典,傳個字典進去唄。
1
2
3
4
5
6
7
8
9
10
11
|
import logging
# 想著把引數做定義成一個常量,放到配置檔案裡或者檔案開頭。另外format太長了先單獨寫。 LOG_FORMAT = '%(asctime)s %(module)s-%(lineno)d [%(levelname)s]:%(message)s'
LOG_KWARGS = { 'filename' : 'test.log' ,
'level' :logging.DEBUG,
'format' :LOG_FORMAT,
'datefmt' : '%Y-%m-%d %H:%M:%S' }
logging.basicConfig( * * LOG_KWARGS) # 字典前也加上**就能傳入字典作為引數了
logging.warning( 'test warning' )
logging.info( 'test info' )
logging.debug( 'test debug' )
|
既然字典能這麼傳參,那麼陣列也一樣了。
1
2
3
4
5
6
|
def deal_list( * args):
print (args)
def deal_dic( * * kwargs):
print (kwargs)
deal_list( * [ 1 , 2 , 3 , 4 , 5 ]) # *args是把引數都變成元組,所以這裡列印出來得是一個元組
deal_dic( * * { 'a' : 1 , 'b' : 2 })
|
本文轉自騎士救兵51CTO部落格,原文連結:http://blog.51cto.com/steed/1982184,如需轉載請自行聯絡原作者
相關文章
- java函式陣列引數的複製問題Java函式陣列
- 陣列作為函式引數陣列函式
- Retrofit 動態引數(非固定引數、非必須引數)(Get、Post請求)
- JavaScript進階系列02,函式作為引數以及在陣列中的應用JavaScript函式陣列
- 陣列排序函式-php陣列函式(一)陣列排序函式PHP
- 二級指標,二維陣列函式引數傳遞指標陣列函式
- iOS 字典轉陣列,陣列轉字典iOS陣列
- Python: 函式引數魔法Python函式
- 函式定義、函式的引數、函式的預設引數函式
- Excel函式應用教程:函式的引數(轉)Excel函式
- python sorted()函式的引數用法Python函式
- python---函式引數、變數Python函式變數
- 字元陣列的幾個應用函式字元陣列函式
- Python函式引數總結Python函式
- python函式變長引數Python函式
- Python 函式(預設引數)Python函式
- Python 函式(可變引數)Python函式
- Python 函式(引數組合)Python函式
- C語言結構體及函式傳遞陣列引數示例C語言結構體函式陣列
- Python的字典、集合和函式Python函式
- python基礎之 函式的引數Python函式
- python中函式的引數傳遞Python函式
- Python中將函式作為另一個函式的引數傳入並呼叫Python函式
- Python全棧Web(JavaScript函式、陣列)Python全棧WebJavaScript函式陣列
- c# 方法引數_陣列引數C#陣列
- Python函式的位置引數、關鍵字引數精講Python函式
- Python函式/動態引數/關鍵字引數Python函式
- C++ main函式命令列引數使用C++AI函式命令列
- JavaScript陣列、字串、數學函式的知識點JavaScript陣列字串函式
- 【匯出匯入】IMPDP table_exists_action 引數的應用
- 函式引數 引數定義函式型別函式型別
- C語言用二維陣列作為函式入口引數的小結C語言陣列函式
- Python 函式 (關鍵字引數)Python函式
- python函式之引數傳遞Python函式
- Python中內建的字典函式Python函式
- C#陣列引數C#陣列
- Python 中函式的 收集引數 機制Python函式
- python字典鍵的特性及字典內建函式&方法Python函式