python 모듈 import하기

import 모듈명

  1. 기본적인 형태

    1
    2
    import mymath
    print mymath.area(5)
  2. from 모듈명 import 가져올 대상

    • 해당 모듈에 존재하는 대상을 가져옴
    • 기존에 존재하던 이름이면 기존 객체가 상실됨
    • 모듈 이름 없이 바로 사용 가능
      1
      2
      from mymath import area, mypi
      print area(5)
  3. from 모듈명 import *

    • 해당 모듈에 존재하는 __로 시작되는 것들을 제외한 모든 대상을 가져옴
      1
      2
      from mymath import *
      print area(5)
  4. import 모듈명 as 새로운 모듈 이름

    • 해당 모듈을 다른 이름으로 사용하고자 할 때 사용
    • 기존 모듈 이름이 너무 길거나 현재 사용중인 이름인 경우 유용
      1
      2
      3
      4
      import string as chstr
      print chstr
      print
      print chstr.punctuation
  5. from 모듈명 import 이름 as 새로운 이름[, 이름 as 새로운 이름]

    • 해당 모듈 내에 정의된 이름을 새로운 이름으로 사용하고자 할 때
      1
      2
      3
      4
      5
      6
      from string import replace as substitute[, upper as up]
      print substitute
      print substitute('ham chicken spam', 'chicke', 'egg')

      print up
      print up('abc')
  • import문은 어디에서나 사용가능(함수 내에서도 가능)

컴파일과 적재시간

  • import mymath를 수행할 때 발생하는 일

    1. mymath.pyc를 찾는다
    2. 없다면 mymath.py를 찾아서 mymath.pyc를 생성한다
    3. mymath.pyc를 메모리로 읽어들여 수행한다
  • .pyc파일

    1. 바이트 코드 파일

      • 기계나 플랫폼(운영체제 등)에 의존하지 않도록 만들어진 일종의 목적 코드(Object code)
      • 파이썬은 컴파일 언어이면서 동시에 인터프리터 언어의 수행 방식을 취함
    2. 새로운 .pyc파일 생성에 대한 판단

      • .py수정시간이 .pyc수정 시간보다 더 최근일 때
    3. .py가 없이 .pyc파일만 있어도 import가능
      • 코드를 숨기는 방법으로 활용 가능

같은 이름을 다시 사용할 때

  • 같은 이름 사용하면 이전의 내용이 삭제되지만 모듈은 메모리에 남아있고, 다시 import하면 다시 가져오는 것이 아니라 메모리에 존재하는 모듈을 활용함. 따라서 기존에 추가 정의한 내용들 사용가능

모듈의 실행과 테스트 코드

  • __name__

    • 현재의 모듈이 최상위 모듈로서 수행되는지, 아니면다른 모듈에 의해 imort되어 수행되는지를 구별하기 위해 주로 사용
    • 최상위 모듈에서 사용할 때 -> __main__
    • 다른 모듈에서 사용될 때 -> 해당 모듈의 이름

      1
      2
      3
      4
      print __name__ # __main__ 출력

      import prname
      print prname.__name__ # prname출력
    • 사용방법

      1
      2
      3
      4
      5
      6
      7
      8
      9
      def add(a, b):
      return a + b

      def f():
      print "Python is becoming popular."

      if __name__ == "__main__":
      print add(1, 10)
      f()
      • 직접 실행할 때는 if절 동작
      • 다른 곳에서 활용할 경우 if절 무시
Comments