Python中函數缺省參數的早綁定


class DefaultConfiguration(object):
    def __init__(self):
        print("calling DefaultConfiguration.__init__ ......")


class AppConfig(object):
    @classmethod
    def get(cls):
        print("calling AppConfig.get ......")
        return DefaultConfiguration()


def do_some_work(config=AppConfig.get()):
    print("do some work ......")

The output is:

calling AppConfig.get ......
calling DefaultConfiguration.__init__ ......

------------------------------------------------------------------------------------------------------------------------------------------------------

 

Python中函數缺省參數的早綁定

Default parameters' early bindings in Python

 

最近一段時間工作上需要給一些遺留代碼補充單元測試,看到一些代碼中由於缺省參數造成不必要的耦合。例如在導入一些模塊的時候,儘管不需要使用該模塊中的一些函數,卻因爲函數的缺省參數原因需要在導入時運行一些邏輯,造成副作用。這一點在單元測試的時候尤其嚴重。

進一步討論這個問題,根本原因在於模塊化做得不好 - 模塊並不是單一功能的,而且是面向實現編程的,造成了極強的耦合。
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章