}

블로그 소개


*여러분들의 따듯한 댓글은 5%, 팔로우는 10% 블로그 포스팅 속도와 퀄리티를 높여줍니다.*

프로필

팔로우 해주시면 포스트할 때 큰 힘이 됩니다!!! 사실 저도 이 팔로우가 무슨 기능이 있는지는 모르겠습니다만, 팔로우 수가 늘면 '날 응원해주는 사람들이 있구나' 생각이 들어서 큰 힘이 됩니다.

팔로어

다른 페이지로 이동


리눅스 독학 페이지 운영체제 독학 페이지 네트워크 독학 페이지 시스템 해킹 하드웨어 독학 페이지 프로그래밍 독학 페이지 보안 페이지

오스 페이지 다이어트 정보 페이지 게임 정보 페이지 인생 꿀팁


****사진을 클릭하시면 페이지로 이동할 수 있습니다!****

<===***===↓↓↓You can use translate using chrome ↓↓↓===***===>

2021년 11월 21일 일요일

파이썬 if __name__ == "__main__"란 쉽고 자세히!

 안녕하세요 마무입니다. 오늘은 파이썬의 'if __name__ == "__main__"'이란 것이 무엇인지 이 "파이썬 if __name__ == '__main__'의미", 파이썬 "__main__"이 무엇인지 알려드리려합니다.


-----목차-----

1. 파이썬 __name__과 __main__이란

i) 정리

2. 파이썬 if __name__ == "__main__" 용도

3. 최종 정리

---------------

입니다. 

더 많은 파이썬 정보는

프로그래밍 독학 페이지 : https://mamu2830.blogspot.com/p/blog-page_33.html

에서 찾아보세요!




1. 파이썬 __name__  __main__이란


먼저 결론부터 말하자면 "__main__"이란 IDE에서 제일 먼저 실행된 스크립트(모듈)이란 뜻이고,

"__name__"이란 이름 그대로 코드가 들어있는 스크립트(모듈)의 이름입니다.

네.. 당연히 이렇게만 말하면 이해가 안되실 것 압니다.

다시 설명하자면

"메인 함수"가 뭐였습니까? 프로그램에서 제일 먼저 실행되는 함수(코드)였었죠!

하지만! 파이썬은 다른 C언어, 자바와 달리 메인 함수라는게 없습니다...

이 말은 즉슨, 파이썬은 IDE에서 가장 먼저 실행하는 소스코드가 'main'이란 뜻이며




이렇게 1번으로 가리킨 "ForModule.py"란 코드(모듈)를 IDE에서 실행시키면, 당연히 가장 먼저 시작하는 코드니, "ForModule.py" 내 "__name__" 객체의 값은 메인 코드(__main__)가 되는 겁니다.

??? 무슨 소리인가요 당연히 __name__은 "ForModule"이여야 하는게 아닌가요??

물론~~ 당연히 원래는 "__name__" 변수 안에 현재 모듈의 이름인 "ForModule"들어있는게 정상이지만, IDE에서 가장 먼저 시작하는 "main"이기도 하니 이런 경우 '제일 먼저 시작하는 모듈'이란 의미인 "__main__"이 더 중요하니 원래 모듈 이름대신 들어가는 겁니다.

그래서 위 코드를 실행해보면 




이렇게 주황색 밑줄처럼 __name__ 변수안에 "ForModule" 대신  "__main__"이 들어가 있는걸 확인할 수 있습니다.

당연하지만 그렇기에 



이렇게 "ForModule.py"가 아닌 "test.py"란 스크립트를 IDE에서 제일 먼저 실행하고, "test.py"에서 "import ForModule"를 통해 "ForModule.py"를 불러와 ForModule의 함수를 사용하면 

당연히 IDE에서는 "test.py" 다음으로 "ForModule.py"의 코드도 실행을 하게 되며

그렇기에 간접적으로 ForModule의 내에 있던 코드, print(f"지금 __name__의 값은 {__name__}입니다. ") 코드도 실행되며 이 때 나오는 결과는




아까와는 다르게 제일 먼저 실행한 코드(main)은 "test.py"파일이니, test.py파일 내 __name__값은 " __main__"이 되는 것이며

당연히 파란색 2번처럼 "__main__"이 아닌 ForModule의 "__name__"은 말 그대로 모듈의 이름인 "ForModule" 되는겁니다.


i) 정리 


그래서 다시 정리하자면

"__main__"이란 IDE에서 제일 먼저 실행된 코드 파일(모듈)이란 뜻

"__name__"이란 코드 파일(모듈)의 이름이 들어있다.

IDE에서 제일 먼저 시작한 코드라면 '__name__'에는 "__main__"이 저장돼 있고, 제일 먼저 시작한 코드가 아니라면 자기 코드파일(모듈) 이름이 저장돼 있다.





2. 파이썬 if __name__ == "__main__" 용도


자 이 

if __name__ == "__main__":

이란 코드는 해석하자면, 현재 모듈의 이름이 "__main__"이라면 if문을 실행해라 뜻이죠?

자 우린 위에서 2가지를 배웠습니다. 

하나는 IDE에서 제일 먼저 실행한 코드 파일(모듈)만 __name__에 "__main__"이 들어있다는 것과

둘은 파이썬에서 import를 통해 다른 모듈을 불러오고 그 모듈의 함수를 사용하면, 그 모듈 전체 코드를 실행한다는 것을요(물론 from ~ import 형식을 사용하면 전부다 실행하진 않습니다.)

여기서 바로 우린 이 

if __name__ == "__main__":

코드를 사용할 용도를 찾을 수 있습니다.

그렇죠! 바로 특정 코드들이, 직접 IDE에서 실행할 때 빼곤 실행되지 않게 하기 위해서 사용하는 것이죠.

예를 들어서 특정 모듈 코드 내에 디버깅용으로써 값들을 추적하기 위해 값을 찍어보는 print(변수)나 코드들을

if __name__ == "__main__" :

코드 내부에 작성하면 다른 모듈에서 참조될 땐 실행되지 않지만, 디버깅을 위해 모듈만 먼저 실행할 때는 실행된다는 것이죠!

코드로 보여드리자면



이렇게 "ForModule.py"코드 내의 sayHi() 함수 내부에 

if __name__ == "__main__":

    print("이건 디버깅용 코드입니다. ")

    print(f"현재 시각은 {time.time()}입니다.")

이렇게 작성해놓았습니다. 

그리고 이 함수를 사용하는 코드를 작성하고, IDE에서 직접 이 ForModule.py를 실행시키면



제일 먼저 시작했으니, 이 ForModule.py는 __main__이 되며, 그렇기에 

if __name__ == "__main__":

가 실행돼, 주황색으로 표시한 값이 나오는 것을 확인할 수 있습니다.

하지만



이렇게 test.py에서 ForModule.sayHi()함수를 사용할 경우, 당연히 __main__은 "test.py"이므로 if __name__ == "__main__": 가 실행되지 않아




아까 직접 Mododule.py를 실행했을 때처럼 "이건 디버깅용 코드입니다.""현재 시각은~~~" 이 없는 걸 확인할 수 있습니다.




3. 최종 정리


"__main__"이란 IDE에서 제일 먼저 실행된 코드 파일(모듈)이란 뜻

"__name__"변수엔, 코드 파일(모듈)의 이름이 들어있다.

IDE에서 제일 먼저 시작한 코드라면 '__name__'에는 "__main__"이 저장돼 있고, 제일 먼저 시작한 코드가 아니라면 자기 코드파일(모듈) 이름이 저장돼 있다.

if __name__ == "__main__" : 안에 작성한 코드는, 코드가 적힌 모듈이 IDE에서 제일 먼저 실행되는 스크립트일 때만 실행된다. 그래서 주로 테스트용이나 디버기용 코드를 적어놓는다.






오늘도 긴 글 읽느라 고생하셨습니다! 

도움이 되셨다면 따뜻한 댓글 및 팔로우를 해주시면 큰 힘이 돼 포스트 퀄리티 향상에 도움을 줍니다!

그럼 다음에 더 좋은 포스트로 찾아뵙겠습니다!



댓글 없음:

댓글 쓰기

#1 여러분들이 소중한 시간을 투자해 달아주시는 따뜻한 댓글들은 저에게 정말 큰 힘이 됩니다!

#2 저의 각 포스트들은 엄청난 노력과 시간 투자를 통해 만들어진 포스트들로, 무단 복제나 모방하는 것을 금지합니다.

#3 저의 포스트에도 틀린 정보가 있을 수도 있습니다. 그럴 경우 친절한 말투로 근거와 함께 댓글로 달아주시면 정말 감사하겠습니다!