>백엔드 개발 >파이썬 튜토리얼 >Python에서 부작용에 대한 목록 이해를 사용하는 것이 Pythonic으로 간주됩니까?

Python에서 부작용에 대한 목록 이해를 사용하는 것이 Pythonic으로 간주됩니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-19 06:58:10416검색

Is Using List Comprehensions for Side Effects in Python Considered Pythonic?

부작용에 대한 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.