1. Definition: 변수나 함수, 클래스 등을 모아놓은 파일
    • built-in module: python에서 미리 구현해놓은 모듈
      • len같은 기능들
  1. module 만들기
## my_module.py
my_module_var = 7

def my_module_func():
    return "Hello!"

class MyModuleClass:
    pass
  • 주의점

    • import: 모듈을 불러와 사용하기 위해 사용 import <모듈 이름>

      • import한 후에는 dot notation을 사용하여 바로 쓸 수 있음

        import my_module
        
        my_module.my_module_func()
        
  1. Alternate ways to import module

    • from ... import를 사용해서 모듈을 불러올 수 있음

    • from <module name> import <function/variable/class> ...

      from my_module import my_module_func, my_module_var
  2. import as

    • import하고자 하는 것들의 이름이 너무 길 때 사용

      from my_module import my_module_function_with_too_long_of_a_name as f1
      
      f1()     # => don't have to write the long function name all the time. just use f1 instead
  3. Package

    • module을 파일이라고 생각할 때, 모듈들이 모여있는 폴더라고 생각하면 됨

    • dot notation 을 사용해서 import할 수 있음

      import package1.module1
      from package2.module2 import function2
      
      package1.module1.function1()
      function2()
    • package initiatlization: 가끔 import할 때 __init__.py를 사용해서 초기 설정을 해야할 때가 있음

      • __init__.py 파일이 있을 경우 해당 파일의 코드들이 자동으로 실행됨
      • import할 때 경로의 길이를 줄여줌
      • package에서 import하는 변수/함수/클래스 제한
      • 그 외 package가 import될 때 꼭 먼저 실행해야 하는 코드들
  • 경로 줄여주기: __init__.pyimport를 해주면 됨

    # __init__.py
    from mod1 import func2
    
    # main.py
    from pkg import func2
    
    func2()
  • package에서 import하는 변수/함수/클래스 제한

    • 외부로 공개할 수 없거나 공개하고싶지 않은 것들을 선택적으로 import 제한 가능

    • __all__에 선언된 것들만 import가 가능하므로, __all__에 할당할 것들을 선택적으로 선정하면 됨

    • import *할 경우 모든 것을 import하는 것

      #__init__.py
      from mod1 import func2
      from mod2 import func3
      
      __all__ = ['func2', 'func3']
      #main.py
      from pkg import *
      func2()
      func3()
      func4()     # => 실행 안됨. __all__에 없어서
  • 다른 사람들의 package사용: 먼저 package를 설치해야 함

      pip install Django