TIL_17 : Module

JaHyeon Gu·2021년 7월 19일

Python

목록 보기
1/2
post-thumbnail

🙄 모듈 vs 스크립트


➡ 모듈

  • 프로그램에 필요한 변수들이나 함수들을 정의해 놓은 파일
  • 많이 쓸법한 기능들은 이미 모듈로 만들어져 있음 ➡ 라이브러리
area.py (모듈)

PI = 3.14

def circle(radius):
	return PI * radius ** 2

def square(length):
	return length * length

➡ 스크립트

  • 프로그램을 작동시키는 코드를 담은 실행 용도의 파일
  • import 로 모듈 속 기능들을 이용



🙄 import 의 여러가지 방법


➡ 모듈 전체 import

  • 모듈.함수() 로 호출

import area

print(area.circle(2))
print(area.square(3))
print(area.PI)

# 12.56
# 9
# 3.14

➡ 일부 함수만 필요할 때 import

  • 함수() 로 호출
from area import circle, square

print(circle(2))
print(square(3))

# 12.56
# 9

➡ 모든 함수가 필요할 때 import

  • 함수() 로 호출
  • import area 와 똑같지만 함수 호출 시 모듈 이름 불필요
  • 어떤 모듈에서 온 함수인지 파악할 수 없는 단점, 권장하지 않는 방식
from area import *

print(circle(2))
print(square(3))
print(PI)

# 12.56
# 9
# 3.4



🙄 import 이름 변경


➡ 모듈 이름 변경


import area as ar

print(ar.circle(2))
print(ar.square(3))
print(ar.PI)

# 12.56
# 9
# 3.14

➡ 함수 이름 변경

from area import circle as cr, square as sq

print(cr(2))
print(sq(3))

# 12.56
# 9



🙄 현재 파일에서 사용가능 기능


➡ dir()

  • 어떤 파일에서 정의된 모든 이름들을 알려주는 함수
  • 프로그램에서 사용된 이름을 좀 더 쉽게 관리할 수 있다.

import area 

print(dir())
print(dir(area))

# 현재 스크립트, 실행파일에 정의된 이름들 출력
# 모듈 area속 정의된 이름들 출력



🙄 모듈 검색 경로


➡ 모듈 sys

  • 모듈을 찾기 위해 출력된 경로 순서대로 검색, 첫번째는 항상 파일이 있는 경로
  • 검색 경로도 결국 list이기에 append를 이용해 원하는 검색 경로 추가 가능

import sys

print(sys.path)

# ['D:\\PyCharm Community Edition 2021.1.1\\11111111', 'D:\\PyCharm Community Edition 2021.1.1', 'C:\\Users\\User\\AppData\\Local\\Programs\\Python\\Python39\\python39.zip', 'C:\\Users\\User\\AppData\\Local\\Programs\\Python\\Python39\\DLLs', 'C:\\Users\\User\\AppData\\Local\\Programs\\Python\\Python39\\lib', 'C:\\Users\\User\\AppData\\Local\\Programs\\Python\\Python39', 'C:\\Users\\User\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages']



🙄 특수변수 : name


➡ __name__

  • 모듈의 이름을 저장해 놓은 변수
  • 파일을 직접 실행하면 __name__은 __main__으로 설정
  • 파일을 import 하면 __name__은 모듈 이름으로 설정
area.py
print(__name__)

# __main__
run.py
import area

print(__name__)

# area

➡ 모듈 파일 실행 시 문제점

  • 모듈 area.py 가 아래와 같을 때
PI = 3.14

def circle(radius):
    return PI * radius ** 2

def square(length):
    return length * length

print(circle(2) == 12.56)
print(square(3) == 9)

# True
# True
  • run.py를 실행하면
import area

print(area.circle(2))
print(area.square(3))

# True
# True
# 12.56
# 9
  • import 모듈에 모든 코드를 실행해 의도와 다른 출력값을 얻을 수 있다.

  • 파일이 직접 실행될 때만 실행하고 싶은 코드
    if __name__ == '__main__' 이라는 조건문 안에 넣어주면 됨

area.py
PI = 3.14

def circle(radius):
    return PI * radius ** 2

def square(length):
    return length * length

if __name__ == '__main__':
    print(circle(2) == 12.56)
    print(square(3) == 9)

# True
# True
run.py
import area

print(area.circle(2))
print(area.square(3))

# 12.56
# 9
profile
IWBAGDS

0개의 댓글