2017-05-30 42 views
1

我知道我可以在Scala中做到這一點,但有沒有辦法做到在Python類似的東西:的Python:用姐姐的參數構建默認值

def validate_config(data_dir, config_file_dir = data_dir + '/config', json_schema = None): 
    print(data_dir) 
    print(config_file_dir) 
    print(json_schema) 

validate_config('data') 

我期待的輸出是:

data 
data/config 
None 

謝謝!

回答

5

這不是直接支持。我會這麼做,就像Python避免可變默認實例一樣:

def validate_config(data_dir, config_file_dir=None, json_schema=None): 
    if config_file_dir is None: 
     config_file_dir = data_dir + '/config' 
    # rest of code here 
2

不完全是因爲Python的默認參數在編譯函數定義時被評估。但是你可以使用None作爲默認ARG並檢查它在運行時,像這樣:

def validate_config(data_dir, config_file_dir=None, json_schema=None): 
    if config_file_dir is None: 
     config_file_dir = data_dir + '/config' 
    print(data_dir) 
    print(config_file_dir) 
    print(json_schema) 

validate_config('data') 

輸出

data 
data/config 
None