모듈

이다연·2021년 2월 4일
0

OOP

목록 보기
1/3
post-thumbnail

from 코드잇 파이썬 중급

모듈

dir()

현재 파일에서 사용가능한 기능 확인

  • dir(): 모듈 안에 정의된 모든 이름을 확인할 수 있음.
from area import circle 
print(dir()) -> circle, __name__ ~
  • 특수변수: __name__ 던더 파일
    파이썬이 내부적으로 관리하는 변수들 이름 확인

네임스페이스

파일에서 정의된 모든 이름들
dir()은 파일의 네임스페이스를 리턴해줌
똑같은 이름으로 여러 함수가 정의되면 가장 나중의 함수가 사용됨.

main.py에서 같은 이름 함수를 작성했고, 이름을 중복되게 하지 않으려면 from area import square as sq 모듈에서 불러올 때 이름 as somethingelse로 변경해줌.

또는 사용시 모듈.함수 형식으로 모듈을 특정하여 사용

import module 
area.square((2))

모듈 검색 경로

import sys
print(sys.path)

sys는 system 스탠다드 모듈에서 확인 가능.
실행환경에 관련된 함수와 변수가 들어있음.

일반적으로 site-package 폴더에 외부 패키지가 저장됨.

Script or Module

프로그램은 여러 파일로 구성되어 있을 수 있다.

스크립트: 실행(run) 용도. 프로그램을 작동시키는 코드를 담은 실행 용도의 파일

모듈: 불러오는 import 용도 파일. 프로그램에 필요한 변수들이나 함수들을 정의해 놓은 파일

직접 실행하지 않고 다른파일에서 가져다 씀

-> 모듈을 스크립트로 사용할 수도 있음.
우리가 그 안에 어떤 내용을 담을지 정한 것일 뿐, 파일 자체에 특별한 차이가 있는 것은 아님. 어떤 파이썬 파일이든 직접 실행할 수도 있고, 다른 곳에서 불러올 수도 있다. 상황에 따라 바뀜.
모듈을 임포트하면 모듈의 모든 것이 실행된다. 테스트 코드까지 다 출력되는 문제가 생김.

__name__ &__main__

__name__: 모듈의 이름을 저장해놓은 변수. 값은 파이썬에서 알아서 정해줌.
-파이썬 파일을 직접 사용하면main.
-다른곳에서 임포트해서 사용하면 원래 이름으로 설정됨.
실행 순서도 메인 먼저.
실행이란 파일명 지정하고 초록 삼각형 눌러서 run 하는 것.

  • 네임 == 메인
    만약 area file이 직접 실행될 때만 함수 호출을 실행하려면
    네임스페이스를 사용하여 네임이 메인으로 지정되어 있는지 확인해주면 됨.
if __name__ == '__main__':
	function call

main()

파일에서 어떤 프로그램을 작동시키는 부분을 그냥 main이라는 함수 안에 넣어 주어 가독성 높일 수 있다. 주로 테스트 코드를 넣어준다.

if name == 'main' 안에 있는 코드는 파일이 직접 실행될 때만 실행되니까 그 안에서 main 함수를 호출해 주면 됩니다.

PI = 3.14

# 원의 면적을 구해 주는 함수
def circle(radius):
      return PI * radius * radius  

# 정사각형의 면적을 구해 주는 함수
def square(length):
      return length * length

# 함수들을 테스팅 하는 메인 함수
def main():
      # circle 함수 테스트
      print(circle(2) == 12.56)
      print(circle(5) == 78.4)

      # square 함수 테스트
      print(square(2) == 4)
      print(square(5) == 25)

if __name__ == '__main__':
    main()

스탠다드 라이브러리

  • 많이 쓸법한 모듈을 모아놓음
    int float 같은 자료형
    dir print 같은 내장함수
    유용한 기능을 제공하는 모듈들(스탠다드 모듈)
    e.g. import math , random, datetime etc

패키지

비슷한 모듈을 묶어둠

profile
Dayeon Lee | Django & Python Web Developer

0개의 댓글