본문 바로가기
프로그래밍/Python

Python에서 C의 for 구현하기

by 페이지다운 2021. 12. 21.
반응형

파이썬은 C로 만들어졌지만, 기존의 C Famliy 언어와는 확실히 다른 구조를 갖고 있다. for도 그 중 하나인데, 파이썬의 이러한 for을 좋아하는 사람도 있고 싫어하는 사람도 있을 것이다.

 

C언어의 for이

for (변수 선언; 조건 검증; 변수 변화) 

이러한 구조라면 파이썬은

for X in Iterable:

이러한 구조다.

 

재밌는 것은 파이썬의 이러한 구조를 역으로 활용하여 C의 for을 흉내내볼 수 있다는 것이다.

이 코드는 람다식에 대한 이해가 어느정도 필요하다. 람다는 '익명 함수'의 개념으로, 파이썬에서는 간단한 한줄짜리 함수를 만들어 넘길 때 사용한다. 다만 아쉽게도, 귀도의 철학인지 파이썬에서 이 이상으로 람다를 활용하는건 힘든 편이다.

 

그리고 yield는 제너레이터 구문으로, 제너레이터 함수는 일종의 iterable로 바뀌게 된다.

 

다만 이러한 코드는 i를 변화시키는 등의 트릭을 쓰기는 힘들다. 굳이 그렇게 하고 싶다면, 다음과 같이 클로저를 사용하는 것이 하나의 방법이 될 수는 있겠으나 퍼포먼스는 장담 못 한다.

여담으로, C의 for 구조를 이용하여 가짜 While을 이렇게 만들어내는 것도 가능하다.

#define for(;x;) While(x)

반응형

댓글