背景說明

最近在寫Rough Set的時候,剛好寫完想說重構一下程式,於是就和ChatGPT來請教一下,不得不說有蠻多收穫了,於是就來筆記一下。

原始寫法

class RoughSet:
    def __init__(self, data, name_col=None, feature_col=None, decision_col=None):

        self.df = data
        if name_col is None:
            self.name_column = data.columns[0]
        else:
            self.name_column = name_col
        if feature_col is None:
            self.feature_col = list(data.columns[1:-1])
        else:
            self.feature_col = feature_col
        if decision_col is None:
            self.decision_col = data.columns[-1]
        else:
            self.decision_col = decision_col
        self.check_roughset_prerequisites()
  • 這邊是想要傳入設定的name_col, feature_col, decision_col等內容
  • 但也允許使用者如果沒有傳入的話,會用預設的欄位
    • 只是這個欄位是要從使用者傳入的data來計算

ChatGPT優化

class RoughSet:
    def __init__(self, data, name_col=None, feature_col=None, decision_col=None):
        self.df = data
        self.name_column = name_col or data.columns[0]  # 簡化的if/else語法
        self.feature_col = feature_col or list(data.columns[1:-1])
        self.decision_col = decision_col or data.columns[-1]
        self.check_roughset_prerequisites()
  • 這邊利用Noneor的特性
  • or的前面那個值非False(None)的時候,就會直接取用前者

心得

使用self.name_column = name_col or data.columns[0]的方式,可以簡化if/else寫法之餘滿足預設值的需求