[Python] Ch6 - part1. 모듈

2021. 4. 24. 02:53· Language/Python
목차
  1. 스탠드얼론 프로그램
  2. 커멘드 라인 인자
  3. 모듈과 import
  4. 실습
  5. 다른 이름으로 import
  6. 필요한 것만 임포트하기
  7. 모듈 검색 경로
  8. Problems
  9. Summarry

스탠드얼론 프로그램

  • 외부 모듈 및 라이브러리 등을 사용하지 않고 독립적으로 실행되는 프로그램
  • 다음의 내용으로 standalone.py 파일 작성
print("This is a standalone program")
  • cmd에서 standalone.py실행
  • c:\...\python standalone.py
  • 이때 실행하면 
(venv) C:\>python stand
alone.py
This is a standalone program

다음과 같은 결과를 출력한다.

 

커멘드 라인 인자

  • stsargs.py 파일 작성
import sys

print('Program argument:', sys.argv)

결과를 실행하면

(venv) C:>python sysargs.py
Program argument: ['sysargs.py']

이 때,

(venv) C:>python sysargs.py 1 2 a b 
Program argument: ['sysargs.py','1', '2', 'a', 'b']

로 출력됨을 알 수 있다.

 

stsargs.py파일을 수정해서 다음과 같이 작성하자

import sys

n1 = int(sys.argv[1])
n2 = int(sys.argv[2])

print(n1 + n2)

결과

(venv) C:\>python sysargs.py 1 2
3

두번째, 세번째 요소를 int로 바꿔서 출력함

그래서 어떤 커멘드라인 파일 이름뒤에 인수를 넣어 짤 수 있다. 이런것을 커멘드 라인 인자라고 한다. 

 

모듈과 import

모듈(module)

  • 파이썬에서의 모듈은 파이썬으로 작성된 코드의 파일
  • 규모가 큰 프로그램을 하나의 파일에 작성하는 것은 유지보수에 불리
    • 하나의 파일로 프로그램을 작성하기 보다 여러 단위 파일을 나누어 작성

import문

  • 다른 모듈의 코드를 참조하는 문장 
  • import문의 형식
import <모듈 또는 패키지>
form <모듈 또는 패키지> import <사용하고자 하는 것>

 

실습

main.py

import report
description = report.get_description()
print("Today's weather:", description)

 

report.py

def get_description():
    from random import choice
    possibilites = ['rain', 'snow', 'sleet', 'fog','sun','who knows']
    return choice(possibilites)

if __name__ == '__main__':
    w = get_description()
    print(w)

 

결과

fog

 

 

다른 이름으로 import

  • 여러 모듈을 사용할 경우 이름이 충돌하는 경우가 발생할 수 있다.
  • 임포트를 할 때 앨리어스(alias)를 사용하면 이름을 변경하여 임포트가 가능
  • 이전 실습에서 main.py를 앨리어스를 사용하여 임포트 하는 예
import report as wr

description = wr.get_description()
print("Today's weather:", description)

 

필요한 것만 임포트하기

모듈 전체 또는 모듈의 필요한 부분만 임포트 가능

main.py에서 get_description 함수만 임포트

from report import get_description
description = get_description()
print("Today's weather:", description)

#결과
Today's weather: sun

report.py

def get_description():
    from random import choice
    possibilites = ['rain', 'snow', 'sleet', 'fog','sun','who knows']
    return choice(possibilites)

if __name__ == '__main__':
    w = get_description()
    print(w)

 

만약에 import에 randint를 추가하고 싶으면,

from random import choice, randint

다음과 같이 쓸 수 있다.

 

main.py에서 앨리어스를 사용하여 get_description함수만 임포트 할 수 있다.

from report import get_description as do_it
description = do_it()
print("Today's weather:", description)

 

report.py에서 random  모듈의 모든 것을 임포트 하려면 다음과 같이 작성

from random import *
def get_description():
    possibilites = ['rain', 'snow', 'sleet', 'fog','sun','who knows']
    return choice(possibilites)

if __name__ == '__main__':
    w = get_description()
    print(w)

 

모듈 검색 경로

다음의 명령어를 인터프리터에 입력하여 모듈을 찾는 경로에 대한 리스트를 확인

Python 3.9.2 (tags/v3.9.2:1a79785, Feb 19 2021, 13:44:55) [MSC v.1928 64 bit (AMD64)] on win32
import sys
sys.path
[경로]

import 또는 from ... import ... 구문을 처리할 때, <경로 리스트>에 있는 위치들로부터 해당 모듈이 있는지 찾게 됨

 

Problems

다음과 같은 내용의 모듈(module1.py)이 있다고 할 때, 다음 물음에 답하여라

#module1.py
v = [1,2,3,4]

def func1(a,b):
    return a + b

def func2(a,b):
    return a ** b

1. import module1 구문으로 module1을 임포트 했을 때, module1의 func1(10,20)을 호출하여 보아라

module1.func1(10,20)

2. module1에서 v와 func2만 임포트 하는 구문을 작성하여라.

from module1 import v, func2

3. module1 의 모든 것을 임포트 하는 구문을 작성하여라.

from module1 import *

 

Summarry

  1. 스탠드얼론 프로그램이란 외부 모듈 및 라이브러리 등을 사용하지 않고 독립적으로 실행되는 프로그램을 말한다.
  2. sys 모듈의 sys.argv를 통해 커멘드 라인 인자를 가져올 수 있다.
  3. 모듈이란 파이썬으로 작성된 코드의 파일을 말하며, 규모가 큰 프로그램을 여러 단위의 파일로 나누어 작성할 수 있게 하여 프로그램의 유지보수를 좋게 한다.
  4. import문을 이용하여 모듈의 코드를 참조할 수 있다.
  5. as 키워드는 임포트한 대상의 앨리어스(별명)을 지어 이름 충돌을 피할 수 있게 한다. 

 

'Language > Python' 카테고리의 다른 글

[Python] Ch6 - part 3. 라이브러리  (0) 2021.06.29
[Python] Ch6 - part 2. 패키지  (0) 2021.04.24
[Python] Ch5 - 함수  (0) 2021.04.24
[Python] Ch4 - part 3. 컴프리헨션  (0) 2021.04.07
[Python] Ch4 - part 2. 반복문  (0) 2021.03.29
  1. 스탠드얼론 프로그램
  2. 커멘드 라인 인자
  3. 모듈과 import
  4. 실습
  5. 다른 이름으로 import
  6. 필요한 것만 임포트하기
  7. 모듈 검색 경로
  8. Problems
  9. Summarry
'Language/Python' 카테고리의 다른 글
  • [Python] Ch6 - part 3. 라이브러리
  • [Python] Ch6 - part 2. 패키지
  • [Python] Ch5 - 함수
  • [Python] Ch4 - part 3. 컴프리헨션
White Han
White Han
Software Developer
White Han
sudo apt-get happiness
White Han
전체
오늘
어제
  • 분류 전체보기 (183)
    • Language (35)
      • Java (17)
      • Java-Weekly-study (0)
      • Python (18)
    • BackEnd (11)
      • Server (2)
      • Spring (3)
      • Spring Security (0)
      • JDBC (1)
      • NodeJS (2)
      • LINUX (3)
    • DataBase (10)
      • MySQL (5)
      • MongoDB (4)
      • Oracle (1)
    • Infra (4)
      • Docker (4)
    • CS (38)
      • OS (38)
    • Problem Solving (79)
      • Algorithm (8)
      • CT-Java (30)
      • CT-Python (41)
    • IDE (1)
      • eclipse (1)
      • vscode (0)
    • Etc. (3)
      • Git (1)
      • TDD, Refactor, CleanCode (1)
      • Conference (1)
    • 기록 (2)
      • 후기 (1)
      • 프로젝트 회고록 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • 글쓰기

공지사항

  • 방문해 주셔서 감사합니다.

인기 글

태그

  • 24인치 모니터 추천
  • Java Inheritance
  • SSAFY
  • 알파스캔 AOC 24B1X
  • 싸피 합격
  • OS
  • 운영체제
  • 자바스크립트 식별자
  • 싸피
  • 자바스크립트 개념
  • javascript identifier
  • 운영체제 역할
  • 자바 inheritance
  • 프로세서
  • 알파스캔 모니터
  • 운영체제 구조
  • 사무용 모니터
  • javascript
  • 싸피8기
  • 사무용 모니터 추천
  • 자바 super
  • Java super
  • AOC 24B1X
  • 자바스크립트
  • Java this
  • 자바 this
  • 싸피 후기
  • 자바스크립스 식별자 종류
  • java
  • 프로세스

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.1
White Han
[Python] Ch6 - part1. 모듈
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.