웹파이썬 프로그래밍 - 모듈(Module)

2021. 7. 21. 22:32강의 내용 정리/웹파이썬 프로그래밍

728x90
반응형

1. 모듈(Module)

- 여러 함수와 변수를 함께 가지고 있는 오브젝트(Object)의 일종으로 하나의 파일에 특정한 함수와 변수를 가지고 있는 것을 모듈이라 부른다.

- 협업에 용이하게 하기 위해 자주쓰고 유용한 특정한 목적의 함수와 변수의 모음을 모듈을 통해 만들고 관리한다.

- 대표적인 모듈: math, sys

 

 

1-1. 모듈 불러오기(import)

- import를 사용해 모듈을 불러올 수 있다.

- 단, 같은 디렉토리 내에 있어야지 모듈을 불러올 수 있다.

# 모듈 불러오기
import math

print(type(math)) # >>> <class 'module'>

 

1-2. 모듈 함수 사용

- (모듈.모듈함수)의 형태로 사용이 가능하다.

- 모듈의 이름을 쓰지 않는 모듈내에 있는 함수를 사용할 수 없다.

    * 만약 모듈이름을 쓰지 않아도 함수를 사용하게 할 수 있다면 함수명 충돌로 인해 복잡해질 가능성이 있기때문에 모듈 이름을 쓰는 것이 더 효율적이다.

    * 단, 모듈이름을 쓰지 않고 모듈 내의 함수를 쓰고싶다면 해당 함수를 다른 변수에 설정하면 된다.

- 모듈 함수를 비롯한 이미 만들어진 함수 및 변수에 특별한 경우가 아니면 덮어쓰기를 하지 않는 것이 좋다.

# 모듈 불러오기
import math

print(math.pi) # 3.14...
print(pi) # >>> NameError

# pi에 모듈함수 적용하기
pi = math.pi
print(pi) # 3.14...



# 모듈 함수의 적절한 사용
radius = 5
area = math.pi * radius ** 2
print(area) # >>> 70.xx

# 함수의 부적절한 사용
# 모듈 함수를 다른 변수로 덮어서 저장한다. -> 해당 모듈 함수를 사용할 수 없게된다.
math.pi = 3
area = math.pi * radius ** 2

 

- 사용할 모듈의 함수가 한정되어있다면 해당 함수만 따로 호출하는 것이 좋다.

(위의 코드에서는 pi만 사용했기에 math 모듈에서 pi만 불러와서 사용할 수 있다.) 

# 모듈 불러오기
from math import pi

print(math.pi) # 3.14...

 

 

1-3. Function과 Method

- Function: 특정한 입력값이 주어졌을 때 정해진 규칙에 따라 출력값을 출력하는 것

- Method: 함수의 일종으로 특정한 타입이 함께 있는 것

- 모든 타입은 그것과 관련된 일련의 methods를 가지고 있다!

 

 

1-4. Module과 Class

- Module: 오브젝트(Object)의 일종으로 하나의 파일에 특정한 함수와 변수를 가지고 있는 것이다.

- Class란 Object의 일종으로 데이터와 함수가 묶여있으며, 어떤 특징적으로 출력되는 것이 정해져있다.

- Class는 각각의 메소드를 가지고 있다.

- Module은 함수를 사용하기 위해 모듈이름을 먼저 써야하는데, Class에서는 클래스 이름을 먼저 사용하거나 Object를 먼저 사용해도 사용할 수 있다.

* 윗 줄의 Object는 데이터와 함수를 함께 가지고 있는 것을 의미하는 것이 아니라, 코드 상에서의 객체를 의미하는 Object이다.

** 후자의 경우는 컴퓨터 메모리에 해당 값을 저장한 뒤(이때 컴퓨터 메모리에 저장된 것이 Object 혹은 Instance라고 부른다.), 클래스에 있는 함수를 연결하는 과정을 진행한다.

*** ex) 변수에 17을 저장하고 그 변수에 18을 다시 저장할 경우 메모리 상에는 17과 18 모두 저장되어있다. 단지 변수의 포인터를 바꿀 뿐이다. 참고(Variables(변수))

# 모듈
from math import pi
print(math.pi) # 3.14...

# 클래스
str.capitalize('trump') # >>> Trump
str.upper('trump') # >>> TRUMP

# trump는 객체이기에 다음과 같은 식도 가능하다.
# <<expression>> <<method_name>> (<<arguments>>)
'trump'.capitalize() # >>> Trump 
'trump'.upper() # >>> TRUMP

 

 

728x90
반응형