파이썬 강좌 – 모듈 사용 ~ 유용한 기능 끌어다 쓰기

  1. 프롤로그
  2. 개발 첫걸음
    1. 컴퓨터 구성요소 - 컴퓨터는 어떤 걸 할 수 있나?
    2. 개발과 관련된 용어
    3. 파이썬의 선택 - 왜 파이썬인가?
    4. 파이썬 설치 - Hello World 출력하기
    5. Visual Studio Code 의 편리한 기능
    6. REPL과 콘솔 창 - 파이썬 동작시키기
  3. 파이썬 기초
    1. 기초 입출력 - 소통하기
    2. 변수와 대입 - 기억하기
    3. 연산자 - 계산하기
    4. 조건문 - 분기를 만들기
    5. 반복문 - 비슷한 작업을 반복하기
    6. 변수와 리스트 - 비슷한 변수들을 묶기
    7. for, range - 리스트의 항목을 다루기
    8. 파이선 기초 꿀팁
      1. 함수와 메소드의 호출 - 편리한 기능 이용하기
      2. 모듈 설치와 사용 - 유용한 기능 끌어다 쓰기
      3. 문자열 - 텍스트 다루기
  4. 파이썬 중급
    1. 정규표현식 - 문자열을 검색하고 치환하기(작성중)
    2. 함수를 직접 만들기 - 자주 쓰는 기능을 묶기
    3. 딕셔너리, 튜플, 세트 - 변수를 다양한 방법으로 묶기
    4. 클래스와 객체 - 변수를 사람으로 진화시키기
    5. 상속 - 클래스를 확장하기
    6. 파이썬 중급 꿀팁
      1. 코드를 작성하는 사람의 의도(작성중)
      2. 정체성과 동질성 - 객체의 성질(작성중)
      3. 명령문, 표현식 - 문법을 이루는 것들 (작성중)
      4. 슬라이싱 - 리스트를 갖고 놀기
  5. 파이썬 고급
    1. 예외와 에러 - 예상치 못한 상황에 대응하기
    2. 특별 메소드와 연산자 - 파이썬의 내부 작동방식 이해하기
    3. 다양한 함수 인수 - 유연한 함수 만들기
    4. 시퀀스와 반복자 - 반복과 순회를 자유자재로 다루기
    5. 변수의 범위 - 이름 검색의 범위
  6. 파이썬 심화
    1. 제너레이터와 코루틴 -
    2. async와 await
    3. 데코레이터 - 함수의 기능을 강화하기
    4. 객체로서의 클래스 - 클래스를 동적으로 정의하기
  7. 파이썬 프로젝트 실습
    1. 원카드 게임 만들기 (1)
    2. 원카드 게임 만들기 (2)
  8. 실전 (파이썬 외적인 것들)
    1. 유니코드 - 컴퓨터에서 문자를 표기하는 방법
    2. html, css, 인터넷 - 자동화 첫 걸음 내딛기
    3. 네트워크 - 인터넷으로 통신하는 방법
    4. 문서 - 문맥을 읽어보기


개요

읍읍무위키에 따르면 모듈이란 뜻은 한 시스템을 여러 개의 기능적 구성요소(모듈)들을 조합함으로써 완성하도록 한 설계라고 합니다. 즉 모듈을 가져와서 사용한다는 뜻은 어떤 특정한 기능을 불러와서 사용하겠다는 뜻으로 이해하면 될 것 같습니다.

그렇다면 사용하기 편리한 기능을 내장 함수처럼 처음부터 바로 사용할 수 있도록 하지 않고 굳이 모듈로 구분해 놓았을까요?

우리가 게임을 실행할때 로딩하듯이 코드또한 로딩되어야 비로소 실행할 수 있습니다. 로딩된다 함은 그러한 코드가 메모리에 적절하게 적재되어 있음을 뜻합니다. 내장 함수같은 경우 워낙에 빈번하게 사용되기 때문에 처음부터 로딩되도록 고안되었지만 모듈의 기능은 상대적으로 더 특수성을 띠고 덜 사용되기 마련입니다. 무엇보다 이러한 모듈은 아주 방대합니다. 이런 모듈의 기능들을 처음부터 다 불러온다면 로딩하는 데만 모든 자원이 소모될 것입니다.


간단하게 모듈 불러오기

파이썬에서는 모듈을 불러오는 과정이 복잡하고 어렵지 않습니다. 단 한 줄만 쓰면 됩니다.

import 모듈이름

그나마 자주 쓰이는 math 모듈을 불러와서 사용해봅시다.

import math
print(math.pi)
3.141592653589793

모듈 이름 정하기

as 키워드를 통해 모듈의 이름을 우리가 직접 정할 수 있습니다.

import math as m
print(m.pi)
print(math.pi) # 에러. math는 정의되지 않았습니다.
3.141592653589793
Traceback (most recent call last):
  File "c:/Users/tooth/Desktop/test.py", line 3, in <module>
    print(math.pi) # 에러. math는 정의되지 않았습니다.
NameError: name 'math' is not defined

모듈의 필요한 부분만 가져오기

from 모듈명 import 세부사항을 통해서 모듈 내 포함되어 있는 기능을 가져올 수 있습니다. 여러 개를 가져오려면 쉼표를 사용하면 됩니다.

from math import pi, sin
print(pi)
print(sin(1))
3.141592653589793
0.8414709848078965

fromas를 동시에 사용할 수도 있습니다.

from math import pi as p, sin as s
print(p)
print(s(1))
3.141592653589793
0.8414709848078965

표준과 외부

파이썬 재단에서는 파이썬 실행 환경과 함께 파이썬 표준 라이브러리를 배포합니다. 이는 파이썬 설치에 포함되어 있습니다. (라이브러리란, 유용한 기능을 미리 만들어놓은 것을 두루 뜻하는 말입니다. 지금은 파이썬 모듈의 모음집이라고 이해해도 무리 없습니다.) 위 예제에서 우리는 그나마 자주 쓰이는 math 모듈을 불러와서 사용해보았습니다. 이는 별다른 설치가 필요하지 않았습니다.

하지만 pandas, numpy와 같이 표준에 포함되어 있지 않은 모듈은 파이썬 패키지 매니저를 통해 별도로 설치해야 합니다. 흔히 우리가 프로그램을 설치하는 것처럼 인터넷에서 인스톨러를 받아서 설치하는 것이 아니라, 콘솔 창에서 간편하게 명령을 통해 설치합니다. 파이썬 패키지 매니저가 알아서 설치해주니 참으로 간편하게 느껴지실 겁니다. 간단한 예시로는 다음 명령을 콘솔 창에서 실행시키기만 하면 pandas 모듈이 설치됩니다.

pip install pandas

만약 작동하지 않는다면, 다음을 시도해보세요.

pip3 install pandas


프로그래밍 문제

다음은 random 모듈에 대한 설명이다. 이를 바탕으로 과제를 해결하라.

  • random 모듈이란, 무작위 숫자를 불러오거나 확률과 관련된 작업을 할 때 유용하게 쓰인다.
  • import random을 통해 모듈을 불러올 수 있다.
  • random.randint(small, big) : small 이상 big 이하의 정수를 무작위로 뽑아 리턴한다.
  • random.uniform(small, big) : small 이상 big 이하의 실수를 무작위로 뽑아 리턴한다.
  • random.choice(seq) : seq에서 무작위로 항목 하나를 뽑아 리턴한다. (seq는 리스트)
  • random.sample(seq, num) : seq에서 무작위로 항목 num 개를 뽑아 리턴한다. (항목은 중복되지 않는다.) (seq는 리스트)
  1. random 모듈의 uniform 함수만 임포트하라. (import, from 사용)

  2. 다음 코드가 어떤 의도인지 설명하라.

    1. randint

      attack = randint(10, 20)
      
    2. choice

      game = ['rock', 'paper', 'scissors']
      sel = random.choice(game)
      
  3. 다음 코드의 결과를 예측하라.

    deck = []
    for shape in '♦♣♥♠':
        for num in "23456789AJQK":
            deck.append(shape + num)
    select = random.sample(deck, 7)
    print(select)
    
  4. 어떤 게임에서, 플레이어의 공격력을 랜덤으로 결정하고자 한다. 이 게임에서는 주사위를 10번 굴려 그 총 합을 공격력으로 설정한다. 그런 식으로 설정해본 공격력 20개를 시험삼아 출력해보시오.


프로그래밍 문제 정답

  1. from random import uniform
  2. 코드 의도 설명
    1. 10이상 20 이하의 수를 랜덤으로 받으려고 함
    2. 'rock', 'paper', 'scissors' 중 하나를 랜덤으로 선택하고자 함
  3. 트럼프 카드 덱을 만들어 랜덤으로 7개의 카드를 뽑아와서 출력한다.
  4. 코드입니다.
    import random
    for i in range(20):
        s = 0
        for j in range(10):
            s += random.randint(1, 6)
        print(s)
    
    27
    36
    27
    22
    31
    31
    39
    36
    30
    41
    27
    24
    32
    40
    38
    35
    44
    27
    44
    36
    

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다

Scroll to top