스탠드얼론 프로그램
- 외부 모듈 및 라이브러리 등을 사용하지 않고 독립적으로 실행되는 프로그램
- 다음의 내용으로 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
- 스탠드얼론 프로그램이란 외부 모듈 및 라이브러리 등을 사용하지 않고 독립적으로 실행되는 프로그램을 말한다.
- sys 모듈의 sys.argv를 통해 커멘드 라인 인자를 가져올 수 있다.
- 모듈이란 파이썬으로 작성된 코드의 파일을 말하며, 규모가 큰 프로그램을 여러 단위의 파일로 나누어 작성할 수 있게 하여 프로그램의 유지보수를 좋게 한다.
- import문을 이용하여 모듈의 코드를 참조할 수 있다.
- 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 |