티스토리 뷰

Python

[Python]if __name__ == "__main__" 활용법(from, import 활용)

무엇보다_빛나는_샤트 2022. 2. 16. 23:32

안녕하세요

프로그래밍을 배우는 빛나는 샤트입니다.

 

이번에 알아볼 내용은 Python에서 사용하는 from, import 그리고 __name__ == "__main__" 에 대해 알아보려고 합니다.

 


1. from, import

 

먼저 from, import가 어떤 것인지에 대한 내용은 아래 링크에 자세히 있으므로 참고바랍니다.

https://dojang.io/mod/page/view.php?id=2450 

 

파이썬 코딩 도장: 45.4 패키지에서 from import 응용하기

지금까지 calcpkg 패키지의 모듈을 가져올 때 import calcpkg.operation처럼 import 패키지.모듈 형식으로 가져왔습니다. 그러면 import calcpkg처럼 import 패키지 형식으로 패키지만 가져와서 모듈을 사용할 수

dojang.io

 

간단하게 말하면  from과 import를 이용해서 패키지, 모듈을 불러서 사용했습니다.

미리 잘 만들어진 모듈을 load해서 사용하기만 하니까 매우 편리합니다.

만약 우리가 원하는 기능이 없다면? 직접 만들어볼 수도 있습니다.

 

아래 그림은 제가 간략하게 표현해본 관계입니다.

우리의 main code는 main.py에 작성합니다.

그리고 필요한 모듈은 moduel.py에서 작성합니다.

이렇게 하면 2명이서 분업할 수 있어 시간이 절약됩니다.

module.py에는 덧셈, 빼기, 곱하기 등의 기능이 있는 함수 add, minus, matmul 등이 작성되었습니다.

먼저 module.py은 아래와 같이 작성되었다.

# module.py

def add(x,y):
	return x+y
    
def matmul(x,y):
	return x*y
    
def minus(x,y):
	return x-y

 

 

우리는 from, import를 이용해 module.py에 있는 함수를 불러서 main.py에서 사용할 수 있습니다.

# main.py

from module import add
from module import matmul
from module import minus

add_res = add(1,2) # 3
matmul_res = matmul(2,3) # 6
minus_res = minus(5,2) # 3

위와 같이 main.py에서 from, import를 이용해 module에 있는 함수를 불러서 사용할 수 있다.

그렇다면 우리는 module.py에 있는 모든 함수를 import를 하고 싶은데 함수 개수만큼(위에서는 3줄) from, import를 해야할까?

 

모두 import 하고 싶다면 import * 을 이용하면 된다.

아래와 같이 import * 을 하게 되면 module.py에 있는 모든 함수가 import가 된다.

# main.py

from module import *

add_res = add(1,2) # 3
matmul_res = matmul(2,3) # 6
minus_res = minus(5,2) # 3

 

정리: from py파일이름 import 함수이름

 

하지만 import만을 이용해서 add/matmul/minus 함수를 사용할 수 있다. 아래 예시를 보자.

import py파일이름 만 사용하게 되면 함수이름을 적을 때 module.add와 같이 모듈이름.함수이름 이렇게 써야한다.

# main.py

import module

add_res = module.add(1,2) # 3
matmul_res = module.matmul(2,3) # 6
minus_res = module.minus(5,2) # 3

만약 from module만 사용하게되면 error가 발생함.

 


2. if __name__ == "__main__"

 

코딩을 하다보면 py파일 최하단에 if __name__ == "__main__" 구문이 쓰여진 것을 본 적이 있을 것이다.

먼저 아래와 같이 py_practice.py를 작성해보자.

add 함수를 작성한 상태이다.

# py_practice.py

def add(x,y):
    return x + y

 

터미널 창에서 python py_practice.py를 실행하면 아무 일도 일어나지 않는다.

물론 python을 실행해 import를 하면 add 함수를 사용할 수 있다. (아래 참고)

 

하지만 만약 python py_practice.py를 실행했을 때 특정 코드를 실행하게 하고 싶다면 어떻게 해야 될까?

예를 들어서 python py_practice.py를 실행하면 3+5의 결과를 나타내고 싶다면?

# py_practice.py

def add(x,y):
    return x + y

if __name__ == '__main__':
    print(add(3,5))

 

위의 코드와 터미널 실행 결과를 확인해보자.

python py_practice.py를 실행하니 if문이 실행되어서 add(3,5)의 결과가 print 되었다.

 

즉, py파일을 바로 실행하게 되면 if __name__ == "__main__" 가 실행되어서 그 아래 코드가 실행되는 것이다.

터미널에서 py파이을 바로 실행하게 되면 __name__ 변수에 "__main__"이 할당되기 때문!

 

코드를 작성할 때 py파일을 바로 실행할 때 특정 코드를 실행하고 싶다면  if __name__ == "__main__"을 활용해보자.

 

 

참고한 글:https://madplay.github.io/post/python-main-function

 

파이썬 if __name__ ==

Python에서 if __name__ ==

madplay.github.io

 

LIST

'Python' 카테고리의 다른 글

[알고리즘]빗물트래핑  (0) 2022.02.15
[알고리즘]두 수의 합  (0) 2022.02.15
[Python] Python OS Module  (0) 2022.02.11
댓글