본문 바로가기

Python

220203 학습일기

잘~~~ 쉬었다.

또 열심히 해보자.

 

 

1.

모듈은 함수나 변수 또는 클래스를 모아 놓은 파일이다.
모듈은 다른 파이썬 프로그램에서 불러와 사용할 수 있게끔 만든 파이썬 파일이라고도 할 수 있다.

파이썬 확장자 .py로 끝나는 파일은 모듈이다 라고 생각하면 편하다.

 

 

2. 모듈 불러오기

모듈을 불러와보자.

그러면 모듈을 만들어한다.

C:/tina 에 모듈 mod1.py을 만들었다.

mod1.py는 다음과 같다.

 

자 이젠 진짜로 모듈을 불러와보자.

cmd를 검색해서 명령프롬프트 창을 연다.

 

먼저 C:/tina 디렉토리로 이동한다.

여기서 C:\tina로 해도 무방하다. 왜인지는 잘 모르겠다.. 그냥 둘다 되더라.

그래야만 대화형 인터프리터에서 mod1.py를 읽을 수 있다.

 

그리고 python을 입력해준다.

 

여기다 이제 import를 해주면 된다.

mod1.py를 불러오기 위해 import mod1을 입력했다.
import mod1.py로 입력하면 안된다. .py 확장자를 떼고 import 명령문을 입력하도록 하자.

 

import는 이미 만들어놓은 파이썬 모듈을 사용할 수 있게 해주는 명령어이다.
import는 현재 디렉터리에 있는 파일이나 파이썬 라이브러리가 저장된 디렉터리에 있는 모듈만 불러올 수 있다.

import의 사용방법은 다음과 같다.

import 모듈이름

위에서도 이야기했듯 모듈 이름은 mod1.py에서 .py 확장자를 제거한 mod1만을 가리킨다.

 

함수도 불러와보자

mod1.py 파일에 있는 add 함수를 사용해주기 위해서는 위와 같이 mod1.add 처럼 

모듈이름.모듈함수

을 해주면 된다.

 

 

때로는 mod1.addmod1.sub 처럼 쓰지 않고 add, sub처럼 모듈 이름 없이 함수이름만 쓰고 싶을 수도 있다.
이럴 때에는

from 모듈이름 import 모듈함수

를 사용하면 된다.

 

이렇게(↓)

근데 이렇게 하면 문제점이 생긴다.

위와 같이 하면 mod1.py 파일의 sub함수만 사용할 수 있다.

 

from mod1 import add
from mod1 import sub

이렇게 하지 않고 add 함수와 sub함수를 둘다 사용하려면 어떻게 해야할까?

 

 

from 모듈이름 import 모듈함수1, 모듈함수2

콤마로 구분해 필요한 모듈함수만 불러오는 방법이다.

 

 

from 모듈이름 import *

해당 모듈의 모든 모듈함수를 불러오는 방법이다.

* 문자는 '모든 것' 이라는 뜻이다.

 

 

3.

파이썬 라이브러리는 파이썬을 설치할 때 자동으로 설치되는 파이썬 모듈을 말한다.

아래가 파이썬 라이브러리 안에 있는 모듈들의 일부이다.

 

 

4.

만약 이런 경우가 있다고 해보자.

A라는 모듈에 a,b라는 함수를 정의해놓았고 또, A 안에  a,b함수를 호출해놨다.

근데 모듈 B를 작성하는데 모듈 A속의 함수 a가 필요한거다.

이럴 때 어떻게 해야하는지 보자.

 

mod1.py라는 파일은 다음과 같다.

# mod1.py
def add(a,b):
    return a+b

def sub(a,b):
    return a-b

print(add(1,2))
print(sub(1,2))

mod1.py에는 add함수와 sub 함수가 있다.

그리고 이미 이 파일 안에는 add와 sub함수가 호출되어있다.

 

이제 cmd에서 add함수를 호출해보려 한다.

그래서 아래와 같이 작성했다.

함수 add를 사용하기 위해 import만 했는데 mod1.py가 실행되어 결괏값을 출력했다.

근데 그렇다고 해서 add가 호출이 안 되는 것은 아니다.

다만 원하지 않는 값이 출력되었을 뿐이다.

 

 

이 문제를 방지하기 위해서는 이렇게 mod1.py를 바꿔줘야 한다.

# mod1.py
def add(a,b):
    return a+b

def sub(a,b):
    return a-b

if __name__ == "__main__":
    print(add(1,2))
    print(sub(1,2))

if __name__ ==  "__main__" 을 사용하면 C:/tina > python mod1.py 처럼 직접 이 파일을 실행했을 때는 
__name__ == "__main__"이 참이 되어 if 다음 문장이 수행된다.
반대로 대화형 인터프리터나 다른 파일에서 이 모듈을 불러서 사용할 때는 __name__ = "__main__"이 거짓이 되어 if문 다음 문장이 수행되지 않는다.

 

5.

mod1.py가 다음과 같다.

# mod1.py
def add(a,b):
    return a+b

def sub(a,b):
    return a-b

if __name__ == "__main__":
    print(sub(1,1))
    print(__name__)

else:
    print(__name__)

이 mod1.py를 실행하면

0
__main__

이 출력된다.

 

 

import_mod1.py도 만들어보자.

import mod1

단순히 mod1.py만 import했다.

이 모듈의 출력값은 다음과 같다.

mod1

else 아래의 명령문이 출력된 것이다.

 

정리하자면 

__name__은 파이썬에서 만들어 둔 글로벌 변수이다.

어떤 모듈 A.py가 있고 A.py 안에는 B라는 함수가 있다고 하자.


A.py 파일 안에서 B 함수를 실행하면 __name__ 변수에 담기는 것은 "__main__"이라는 값이다.

반면, B 함수가 정의되어 있는 파일 A에서 B를 실행하는 것이 아니라 새로운 파일 C에서 A.py 라는 모듈을 import 해와서 함수 B를 사용하는 경우에는 __name__ 변수에 그 모듈의 이름인 A가 담긴다.

 

 

[출처]

-name

 

if __name__ == “__main__”은 왜 필요할까?

.

medium.com

 

 

파이썬) __name__ 변수는 뭐지? (+if __name__=="__main__"의 의미..)

#1. 변수를 정의할 때 꼭 필요한 문장? 함수를 정의하는 것과 관련하여 파이썬 강의를 듣는 중이었다. 함수의 기능을 열심히 정의를 하고 나서 선생님이 꼭 마지막에 희한한 무언가를 붙이셨다.

lovelydiary.tistory.com

 

 

[교재]

 

점프 투 파이썬

** 점프 투 파이썬 오프라인 책(개정판) 출간 !! (2019.06) ** * [책 구입 안내](https://wikidocs.net/4321) 이 책은 파이썬 ...

wikidocs.net

 

'Python' 카테고리의 다른 글

220208 학습일기  (0) 2022.02.09
220206 학습일기  (0) 2022.02.07
220127 학습일기  (0) 2022.01.27
220123 학습일기  (0) 2022.01.23
220120 학습일기  (0) 2022.01.20