7 모듈러 디자인

2023. 10. 23. 23:24프로그래밍 공부/Python

7.1 모듈

7.1.1 모듈이란?

모듈(module): 프로그램에 통합될 특정 기능의 설계 및/또는 구현


7.1.2 모듈 규격

모듈의 인터페이스(interface): 모듈이 제공하는 것과 사용되는 방법에 대한 명세 

모듈의 클라이언트(client): 주어진 모듈을 사용하는 모든 프로그램 코드

독스트링(docstring): 특정 프로그램 요소의 명세를 제공하기 위해 파이썬에서 사용되는 세 개의 따옴표로 표시되는 문자열 리터럴

 

7.2 하향식 설계

하향식 설계(Top-Down Design): 시스템의 전체적인 설계가 먼저 개발되는 모듈형 설계를 도출하기 위한 접근 방식이다.

설계의 더 세부적인 측면의 사양은 나중의 단계까지 미루게 된다.


7.3 파이썬 모듈

7.3.1 파이썬 모듈이란?

파이썬 모듈(Python Module)은 파이썬 정의와 문을 포함하는 파일이다.

파이썬 표준 라이브러리에는 미리 정의된 표준(빌트인) 모듈 집합이 포함되어 있다.

 

파이썬 파일을 직접 실행하면 프로그램의 main 모듈로 간주된다.

main 모듈에는 특별한 이름 __main__ 이 주어진다.

메인 모듈은 완전한 파이썬 프로그램의 기초를 제공한니다.

그들은 임의의 수의 다른 모듈들을 가져올 수 있다(그리고 그 모듈들 각각은 다른 모듈들을 가져오는 것 등).
main 모듈은 다른 모듈로 가져올 수 없다.


7.3.2 Modules and Namespaces

네임스페이스(namespace): 식별자 집합에 대한 컨텍스트를 제공한다. Python의 모든 모듈은 고유한 네임스페이스를 가지고 있다.

이름 충돌(name clash): 동일한 식별자를 가진 다른 두 엔티티(entity)가 동일한 범위의 일부가 될 때 발생한다.

import한 함수에 대한 이름 충돌에 대한 예제)

# module 1

def double(lst): 

 

# module 2

def double(lst):

 

import module 1

import module 2

 

# main

num_list = [3, 8, 14]

result = double(num_list) <- 식별자 double에 대한 모호한 출처

 

정규화된 함수 이름 사용 예제)

import module1

import module2

ans1  = module1.double(...) <- module1의 네임스페이스로부터 참조한 double 함수

ans2 = module2.double(...) <- module2의 네임스페이스로부터 참조한 double 함수


7.3.3 모듈 가져오기

Python에서 모든 프로그램의 main 모듈은 실행된 첫 번째("최상위") 모듈로 식별된다.

 

“import modulename ” 형태의 가져오기

Python에서 import modulename 형식을 사용하면

가져온 모듈의 네임스페이스를 가져오기 모듈의 네임스페이스에 사용할 수 있지만

가져온 모듈의 네임스페이스의 일부가 되지는 않는다.

 

"from-import" 형태의 가져오기

from modulename import something

 

(a) from modulename import func1, func2
(b) from modulename import func1 as new_func1
(c) from modulename import *

 

from-import 형식을 사용하면 가져온 식별자는 import한 모듈의 네임스페이스에 속한다.

이름이 충돌할 가능성이 있기 때문에 import modulename은 Python에서 선호하는 가져오기 형식이다.


7.3.4 모듈 로딩과 실행

모듈을 로드하면 파일 확장자 .pyc로 컴파일된 버전이 자동으로 생성되며, Python shell을 사용하면 reload() 함수를 사용하여 업데이트된 모듈을 강제로 다시 로드하고 다시 컴파일할 수 있다.

 

내장 함수 dir()

내장 함수 dir()는 파이썬 셸에서 실행되는 프로그램의 메인 모듈 네임스페이스에 있는 항목을 모니터링하는 데 매우 유용하다.

 

7.3.5 파이썬에서의 지역, 전역, 내장 네임스페이스

파이썬 프로그램의 실행 시점에서 참조되는 네임스페이스("active")는 내장 네임스페이스, 글로벌 네임스페이스, 로컬 네임스페이스 등 세 가지가 있다.

내장 네임스페이스(built-in namespace): 파이썬에 내장된 모든 함수, 상수 등의 이름이 포함된다.

글로벌 네임스페이스(global namespace): 현재 실행 중인 모듈의 식별자가 포함된다.

로컬 네임스페이스(local namespace): 현재 실행 중인 함수(있는 경우)의 네임스페이스

 

 

'프로그래밍 공부 > Python' 카테고리의 다른 글

9 딕셔너리와 세트  (0) 2023.10.24
8 텍스트 파일  (0) 2023.10.24
6 객체와 사용  (0) 2023.10.23
5 함수  (0) 2023.10.23
4 리스트  (1) 2023.10.23