상세 컨텐츠

본문 제목

6. 모듈(module)

Python

by evaseo 2021. 4. 25. 17:42

본문

I.    모듈(module)

1.    함수나 변수 또는 클래스를 모아 놓은 파일

2.    소스코드의 재사용을 가능하게 하며, 소스코드를 하나의 이름공간으로 구분하고 관리할 수 있다.

3.    멤버: 일반명령문, 함수, 모듈, 클래스

4.    하나의 파일로 처리된다.

5.    내장된 표준 모듈, 사용자 정의 모듈, 3자 모듈(third party - 전문가들이 만든 것 (anaconda3폴더 -> Lib -> site-packages)

6.    설치는 되었으나 로딩이 되지 않은 모듈을 사용할 때 import

#module: 소스코드의 재사용을 가능하게 하며, 소스코드를 하나의 이름공간으로 구분하고 관리할 수 있다.
#멤버: 일반명령문, 함수, 모듈, 클래스
#하나의 파일로 처리된다.
#내장된 표준모듈, 사용자 정의 모듈, 제3자 모듈(third party - 전문가들이 만든 것 (anaconda3폴더 -> Lib -> site-packages)

#내장된 표준모듈(로딩필요없음) 일부 사용해보기

print('뭔가를 하다가...외부모듈이 필요하면  "import module명" 하고 사용')
print('sum([2,3]:', sum([2,3]))

#설치는 되었으나 로딩이 되지 않은 모듈을 사용할 때 import
import sys
print('모듈경로: ', sys.path)
#sys.exit() #프로그램 강제종료
print('프로그램 끝')

import math #다른 모듈을 가져다 쓰고 있음
print('math.pi:', math.pi)
print('math.sin(math.radians(30)):', math.sin(math.radians(30)))

import calendar
calendar.setfirstweekday(6)
calendar.prmonth(2021,2)

#난수 출력
#모듈명.함수명 형식
import random
print('random.random():', random.random())
print('random.randint(1,10):', random.randint(1,10))

#모듈명은 안써도 됨.
from random import random
print('random():', random())

from random import randint
print('randint(1,10):', randint(1,10)) 

from random import * #권장방법은 아님. 메모리사용에 비효율적
print('random():', random())
print('randint(1,10):', randint(1,10)) ​
실행결과

#사용자 정의 모듈
#실행되는 모듈이라는 표시하기 : 자바로 치면 main클래스
a=10
print(a)

def aa():
    print('aa 만세')

#외부 모듈의 멤버 사용하기 1
print('외부 모듈의 멤버 사용하기 1--------------------------')
import pack2.test12my #경로: 패키지명.모듈명

print('tot: ', pack2.test12my.tot)

li1 = [1,2]
li2 = [3,4]
pack2.test12my.ListHap(li1,li2)

def abc():
    if __name__=='__main__': #main모듈에 가독성을 위해 써주기
        print('응용프로그램이 시작되는 모듈')
        
abc() #응용프로그램이 시작되는 모듈이 찍혔다. == 여기가 main모듈이라는 뜻.

pack2.test12my.kbs()
print()

#외부 모듈의 멤버 사용하기 2
print('외부 모듈의 멤버 사용하기 2--------------------------')
from pack2 import test12my
test12my.mbc()
print()

#외부 모듈의 멤버 사용하기 3
print('외부 모듈의 멤버 사용하기 3--------------------------')
from pack2.test12my import mbc, kbs, tot
mbc()
kbs()
print(tot)
#같은 패키지여도 패키지명과 모듈명은 항상 써줘야 한다.
print()

#외부패키지의 모듈의 멤버 사용하기 4
print('외부패키지의 모듈의 멤버 사용하기 4----------------------------')
from other.test12our import Hap, Cha
print(Hap(5, 3))
print(Cha(5, 3))

#모듈이 anaconda3폴더의 lib에 있는 모듈을 사용할 때는 모듈명만 import하면 됨. ex) import math처럼
print("모듈이 anaconda3폴더의 lib에 있는 모듈을 사용할 때는 모듈명만 import------------")
import test12our2
print(test12our2.Gop(5, 3))
print(test12our2.Nanugi(5, 3))

from test12our2 import Gop
print(Gop(4, 3))

from math import pi
print(pi)
<test12my 모듈>
#사용자 정의 모듈
#자원의 재활용을 목적으로 불러다 쓸 목적으로 함수  또는 전역변수 생성
#호출 당하는 모듈

#Global variable
tot = 123

def ListHap(*ar):
    print(ar)
    
    if __name__=='__main__':
        print('응용프로그램이 시작되는 모듈')
    
def kbs():
    ch=9
    print('공영방송: ',ch)
    
def mbc():
    print('문화방송')
    
ListHap([1,2])    
실행결과

 

<아나콘다 test12our2 모듈이 저장되어 있는 위치>

보통 Site-packages에 외부 모듈들이 저장되어 있다.


<외부 폴더에 있는 모듈을 사용하고자 할 때 폴더경로 추가 방법. 이클립스>


<외부 모듈을 설치하고자 할 때 anaconda3 prompt>

Site-packages에 없을 때는 “pip install 모듈명으로 설치하면 되고, 이 것으로도 설치가 안되면 Python Extension Packages for Windows - Christoph Gohlke (uci.edu)로 가서 찾아서 다운


     __name__변수

n  파이썬 내부적으로 사용하는 특별한 변수 이름

n  현재 모듈에서 직접 자신의 모듈파일을 실행하는 경우(, import하지 않고 멤버들을 호출할 때) __name__변수에는 __main__값이 저장된다.

n  모듈에서 수행할 문장 앞에 if __name__ = “__main__”: 조건을 걸지 않는다면 외부에서 해당 모듈을 import만 해도 모든 명령이 자동 수행된다. import후 필요한 멤버만 호출하고 싶다면 반드시 호출당할 모듈에는 수행할 문장 앞에 if __name__ = “__main__”: 가 있어야 한다.

     pass: 아무것도 수행하지 않는 문법. 함수나 클래스 등에 임시로 코드 작성할 때 자주사용

'Python' 카테고리의 다른 글

7-2. 클래스  (0) 2021.04.25
7-1. 클래스  (0) 2021.04.25
5. 함수  (0) 2021.04.25
4. 제어문 - if, while, for  (0) 2021.04.25
3. 파이썬 자료형 - (3) list, tuple, Dictionary, set, boolean, 변수  (0) 2021.04.25

관련글 더보기