모듈
Programing/Python 2012. 5. 17. 11:35 |1) 모듈
C++의 #include 와 비슷하다고 생각하면 된다.
같은 폴더 안에 있을 경우에는
간단하게
import TestJaeho
이렇게 import시켜 주면 된다.
TestJaeho.py
def sum ( a, b):
if type(a) != type(b):
print ("%s와 %s는 같은 타입이 아니라 더할 수 없습니다." % (a,b))
return
else:
return a+b
Test.py
import TestJaeho
print(TestJaeho.sum(5,625))
print(TestJaeho.sum('a','g'))
print(TestJaeho.sum('a',5))
>>> 630
>>> ag
>>> a와 5는 같은 타입이 아니라 더할 수 없습니다.
단 사용할려면 TestJaeho.sum 이런식으로 해줘야 한다.
정말 귀차니즘 발동 시킨다.
그냥 sum으로만 사용하고 싶을 시에는
import TestJaeho
from TestJaeho import *
또는
from TestJaeho import sum
이렇게 하면 되는데
그냥 import *가 편할 듯 싶다.
다른 폴더에 있는 파일을 임포트 하고 싶을 때!!
우선
import sys
을 하자
sys.path를 실행해 보면
['C:\\Python', 'C:\\Program Files\\PyScripter\\Lib\\rpyc.zip', 'C:\\Windows\\system32\\python32.zip', 'C:\\Python32\\DLLs', 'C:\\Python32\\lib', 'C:\\Python32', 'C:\\Python32\\lib\\site-packages']
이렇게 나온다.
이경로에 있는 것들은 그냥 import 모듈이름 하면 쓸 수 있다.
그러니 sys.path에 내가 쓰고 싶은 폴더를 넣어주면 된다.
이렇게!!
import sys
sys.path.append("C:\Python\TestJaeho")
print (sys.path)
import moduleTest
이렇게 추가한다음 사용하면 된다.
if __name__ == "__main__"
보통은 자신의 모듈의 이름을 가지지만 파이썬 인터프리터에 의해 첫번째 사용 되는 모듈은
__main__이라는 이름을 가지게 된다.
TestJaeho.py
def sum ( a, b):
if type(a) != type(b):
print ("%s와 %s는 같은 타입이 아니라 더할 수 없습니다." % (a,b))
return
else:
return a+b
print ("하하하 이거 다른 모듈에선 출력 안하게 하자")
Test.py
import TestJaeho
print(TestJaeho.sum(5,625))
print(TestJaeho.sum('a','g'))
print(TestJaeho.sum('a',5))
>>> 하하하 이거 다른 모듈에선 출력 안하게 하자
>>> 630
>>> ag
>>> a와 5는 같은 타입이 아니라 더할 수 없습니다.
위와 같이 TestJaeho모듈을 임포트 하는 순간 "하하하 이거 다른 모듈에선 출력 안하게 하자"
이 글 까지 출력 하게 된다 이거 막을 방법은 위에 설명된 if __name__ == "__main__" 이거 이용 하면 된다.
TestJaeho.py
def sum ( a, b):
if type(a) != type(b):
print ("%s와 %s는 같은 타입이 아니라 더할 수 없습니다." % (a,b))
return
else:
return a+b
if __name__ == "__main__"
print ("하하하 이거 다른 모듈에선 출력 안하게 하자")
Test.py
import TestJaeho
print(TestJaeho.sum(5,625))
print(TestJaeho.sum('a','g'))
print(TestJaeho.sum('a',5))
>>> 630
>>> ag
>>> a와 5는 같은 타입이 아니라 더할 수 없습니다.
자 아름답게 ("하하하 이거 다른 모듈에선 출력 안하게 하자") 이 문장이 출력이 안되었다.
모 이유는 Test 모듈이 먼저 읽었기 때문에 Test 모듈의 이름이 __main__이 되었기 때문이다.
모듈을 리로드 해보자
import imp
imp.reload(TestJaeho)
이렇게 하면 모듈이 리로드 완료!!! 나중에 모듈을 바꾸어가면 대화형 인터프리터에서 사용하면 된다는데
아직은 먼말인지 모르겠음!
'Programing > Python' 카테고리의 다른 글
파이썬 5일차 - 2 (0) | 2012.05.14 |
---|---|
파이썬 5일차 - 1 (0) | 2012.05.14 |
파이썬 4일차 (0) | 2012.05.11 |
파이썬 3일차 (0) | 2012.05.09 |
파이썬 2일차 - 1 (0) | 2012.05.09 |