목적

.py를 사용할 때
1. 직접실행
2. 모듈로 import
3. init을 정리하기 위함


순서

I. 코드 구조 
II. 직접 실행 vs 모듈 실행
III. class __init__ 


I. 코드 구조

python은 주로 다음과 같은 구조로 작성한다.

# I. 모듈 import
import ~~~ as ~~
from ~~ import ~~

# II. gloval variable 정의

var1 = 3;
var2 = "str";

# III. Class 정의
class myClass1:
    
    # IV. 클래스 객체 생성 시 초기화부분
    def __init__(self):
    
    #V. 클래스 내 함수 선언
    def myfunc(인자):
        return
    
class myClass2(상속시 추가) :
    def myfunc2(인자):
        return

# VI. 실행 시 코드 작성
if __name__ == '__main__':
    #mycode

이 구조에서 우리는 I. 과 VI.의 모듈 import, 실행시 코드(__name__)을 보고자 합니다.

 


II. 직접 실행 VS 모듈 실행

코드를 보면 __name__이 __main__일 때 실행되는 상황!!
그렇다면 먼저 __name__에 대해 확인 해보겠습니다.

__name__은 기본적으로 이름이 저장되는 변수입니다.

  해당 코드를 직접 실행한 경우 외부에서 모듈로 import한 경우
__name__ 변수에 저장되는 이름 '__main__' 해당 모듈의 파일 이름!

예시코드

# Maintest1.py 함수라면

#직접 실행하면 이부분 실행
if(__name__ == '__main__') :
    print("direct name : " , __name__) # __main__출력

# 다른 파일에서 import Maintest1 하면 이부분 실행
else :
    print("module name : ", __name__) # Maintest1 출력 

해당 프로그램이 불리게 되면 항상 저 if문을 거쳐 코드가 실행되게 됩니다.
초기 실행코드 라고 생각하면 됩니다.

초기 실행코드가 필요없다면 if문이 필요없겠죠??

위 코드의 주석 설명처럼 직접 실행하면 __name__변수가 __main__이므로
main함수가 되며 실행이되고

그렇지 않은경우(module import)에는 else문을 거치며 이후 코드가 실행됩니다.

 

+) __name__은 변수입니다.

따라서 코드 안에서 __name__ = 'hello' 처럼 임의로 변경도 가능합니다!!


III. class __init__

파일, 혹은 모듈의 실행은 이해가 끝났으니 __init__을 확인해보겠습니다.

보통 모듈안에 다수의 class들이 있고 각 class에서
"def __init__(self) : " 를 볼 수 있습니다.

필수는 아니지만

해당 코드의 의미는 Class 실행시 초기 실행 코드입니다.

프로그램을 실행할 때 if __name__==__main__을 통해
프로그램 실행 시 초기 실행 코드를 적은 것과 같이

class 객체를 처음 생성했을 때 실행되는 것입니다!

파일이름을 Class.py라고 한다면

class myclass:
    def __init__(self):
        print("myclass Inited")


if (__name__ == '__main__'):
    class_obj = myclass()
else
    print("Class imported")
    
출력
myclass Inited


외부 파일에서 import했을 때

if (__name__=='__main__'):
    import Class
    class_obj = Class.myclass()

출력
Class imported
myclass Inited

 

+ Recent posts