이번 포스트에서는 오래간만에 파이썬 코드에 대해 적어볼까 합니다.
언제나 그렇듯이 전문 프로그래머가 아닌 초보자 입장에서의 글인 점을 감안해 주시기 바랍니다. ^^
파이썬 소스 코드를 보면, 다음과 같은 형식으로 구성된 경우가 많은 것을 볼 수 있습니다.
import sys def multiple2(num): return num*2 def plus2(num): return num+2 def main(): num1=sys.argv[1] num2=sys.argv[2] result = multiple2(num1)+plus2(num2) print (result) exit(0) if __name__ == '__main__': main()
하지만 아래 처럼 작성해도 전혀 문제 없이 실행되지요?
import sys def multiple2(num): return num*2 def plus2(num): return num+2 num1=sys.argv[1] num2=sys.argv[2] result = multiple2(num1)+plus2(num2) print (result) exit(0)
그런데 왜 굳이 if __name__ == '__main__': 부분을 코드마다 넣는 걸까요?
그 이유는 Stackoverflow 의 이 아티클을 보면 잘 설명되어 있는데요,
- 해당 코드를 직접 실행하지 않고 다른 코드에서 임포트 할 때는 보통 main() 안의 코드를 실행하고 싶지 않고, 함수나 클래스정의 등만을 쓰려 하는 경우가 대부분입니다. 그련 경우 이와 같은 코드가 있으면 코드의 수정 없이 바로 임포트해서 사용할 수 있으며,
- 코드가 더 구조적으로, 읽기 쉽게 구성되기 때문입니다.
if __name__ == '__main__ 처럼, 많은 코드에서 반복되는 코드 부분을 "Boilerplate code" 라고 합니다. (위키백과 설명)
저는 처음에, __ (언더스코어) 2개가 붙어 있는 모양이 보일러 다리모양이라서 그런 이름이 붙은 줄 알았습니다.. -_- ;;
위키 백과에 잘 설명되어 있듯이, 그런 이유가 아니라 예전 신문을 만들 때 조판단계에서 항상 같은 문구는 납을 녹여 만든 판으로 인쇄하여 한번 만들어 놓으면 내용을 수정할 수 없고, 또 반복적으로 재사용하게 되는데 그런 것을 일반적으로 일컫는 용어라고 하네요.
프로그래밍에서도, 소스코드 중 일반적으로 변경되지 않고 다양한 (서로 다른) 프로그램 소스에서 반복 사용되는 문구를 가리키는 용어로 정착되었다고 합니다.
따라서 파이썬 뿐 아니라 다른 언어 (Java 혹은 Perl 등) 에도 각자의 보일러플레이트가 존재하며, 그 모양은 물론 언어 마다 서로 다르겠지요.
독자분들도 파이썬 코드를 작성할 경우 보일러플레이트를 왜 써야 하는지 잘 이해하시고, 적절히 잘 사용하시기 바랍니다.
감사합니다 ^^