由单行功能组成的数据处理管道的单元测试
在阅读Mary Rose Cook的《函数式编程实用入门》时,她以反模式为例。 def format_bands(bands): for band in bands: band['country'] = 'Canada' band['name'] = band['name'].replace('.', '') band['name'] = band['name'].title() 以来 该功能不只是一件事 名称不是描述性的 它有副作用 作为建议的解决方案,她建议通过管道传递匿名函数 pipeline_each(bands, [call(lambda x: 'Canada', 'country'), call(lambda x: x.replace('.', ''), 'name'), call(str.title, 'name')]) 但是,在我看来,这具有无法测试的缺点。至少format_bands可以进行单元测试以检查它是否符合预期,但是如何测试管道?还是说匿名函数如此不言自明以至于不需要对其进行测试? 我为此的实际应用程序是尝试使我的pandas代码更具功能性。我经常会在“ munging”函数中使用某种管道” def munge_data(df) df['name'] = df['name'].str.lower() df = df.drop_duplicates() return df 或以管道样式重写: …