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
또는 파이프 라인 스타일로 다시 작성하십시오.
def munge_data(df)
munged = (df.assign(lambda x: x['name'].str.lower()
.drop_duplicates())
return munged
이런 상황에서 모범 사례에 대한 제안 사항이 있습니까?