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: 아무것도 수행하지 않는 문법. 함수나 클래스 등에 임시로 코드 작성할 때 자주사용
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 |