부작용에 대한 List Comprehension: Pythonic 접근 방식
Python에서는 List Comprehension을 사용하여 기존 시퀀스에서 새 목록을 만드는 경우가 많습니다. 그러나 화면에 인쇄하거나 그래픽 사용자 인터페이스를 업데이트하는 등의 부작용을 위해 목록 이해를 사용하고 싶을 수 있습니다.
부작용을 수행하지만 의미 있는 값을 반환하지 않는 다음 함수를 고려해보세요. :
def fun_with_side_effects(x): # ...side effects... return None
질문이 생깁니다. 목록을 사용하여 이 함수를 호출하는 것이 Pythonic인가요? 컴프리헨션?
[fun_with_side_effects(x) for x in y if (...conditions...)]
또는 표준 for 루프를 사용하여 함수를 호출할 수 있습니다.
for x in y: if (...conditions...): fun_with_side_effects(x)
리스트 컴프리헨션은 간결하고 효율적인 솔루션처럼 보일 수 있지만 안티-컴프리헨션으로 간주됩니다. 이 맥락에서 파이썬적입니다. 이는 중간 목록이 생성된 다음 즉시 삭제되기 때문입니다. 이는 특히 시퀀스가 큰 경우 낭비적이고 계산 비용이 많이 들 수 있습니다.
for 루프 접근 방식은 생성을 방지하므로 Python에 더 가깝습니다. 불필요한 목록. 또한 필요할 때만 fun_with_side_events를 호출하므로 더욱 효율적입니다.
따라서 부작용이 있는 함수를 호출할 때는 for 루프 구문을 사용하는 것이 좋습니다. 이 접근 방식은 Python 원칙을 준수하고 코드 효율성을 보장합니다.
위 내용은 Python에서 부작용에 대한 목록 이해를 사용하는 것이 Pythonic으로 간주됩니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!