모듈

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
Posted by 부우산사나이
: