관리 메뉴

IT journey

Python - 모듈(외장함수) 1편 본문

개인공부공간/Python

Python - 모듈(외장함수) 1편

step 2021. 5. 29. 22:19
728x90
반응형

직접 내용 정리하고 만든 예이니 퍼가실 때는 출처를 남겨주세요:)

모듈(외장함수)

정의

함수나 변수 또는 클래스들을 모아 놓은 파일을 말합니다. 쉽게 말해, 다른 파이썬 프로그램에서 불러서 사용할 수 있게끔 만들어진 파이썬 파일을 말합니다. (즉, 다른 사람들에 의해 만들어진 파이썬 라이브러리와 파이썬에서 제공하는 표준라이브러리를 모듈이라고 합니다.)

 

모듈을 부르는 방법

㉮ import 모듈파일 (as 별명)을 써서 부르면 됩니다.

㉯ from 모듈파일 이름 import* (이 방법은 모듈파일에 있는 모든 함수를 사용할 수 있습니다.)

만들어진 모듈 이외에도 .py 확장자를 이용하여 직접 만들어서 사용이 가능합니다. 

 

모듈을 찾는 방법

㉮ 내장 모듈인 경우에는 파이썬이 이미 어디에 모듈이 있는지를 알고 있어 쉽게 찾습니다.

예를 들면 sys를 말합니다.

㉯ 내장 모듈이 아닌 경우(직접 만들거나 남이 만들어 놓은 라이브러리들)에는 sys.path 변수에 정의된 디렉터리들을 검색합니다. 이 디렉터리에 해당 모듈을 찾게 되면 모듈 내부에 있는 명령(함수, 클래스)들을 읽어오게 됩니다. 

참고로, 초기화 과정은 모듈을 불러올때 이루어집니다.

라이브러리(library)란 전세계의 파이썬 개발자(사용자)들에 의해서 이미 만들어진 프로그램들을 모아놓은 것을 말하며 파이썬 설치 시 자동으로 컴퓨터에 설치됩니다.

그 예로는 sys모듈, pickle 모듈, io 모듈, time 모듈, calendar 모듈, 등입니다.

참고로, 모듈을 보는법은 C:\Users\PC\AppData\Local\Program\Python\Python36-32\Lib

모듈을 만들어서 사용해봅시다.

우선, 모듈을 만들었습니다.(make_m.py)

#클래스, 변수, 함수를 포함하는 모듈입니다.
int_a = 6
String_b = "IT journey"
Bool_c = True
list_d = [1,2,3,4,5,6]
tuple_e = (7,8,9,10)
dic_f = {0:"apple"}
set_g = set([1,2,3,4])

def module_T():
  print("이것은 모듈 테스트입니다.")

class calucate:  
  def add(self,a,b):
    print("두 개를 더할 때 실행")
    print(a+b)
  
  def sub(self,a,b):
    print("두 개를 뺄 때 실행")
    print(a-b)

  def div(self,a,b):
    print("두 개를 나눌 때 실행")
    print(a/b)

  def floordiv(self,a,b):
    print("두 개를 나눗셈을 한 후 소수점 이하를 버림")
    print(a//b)

이제, 만든 모듈을 불러와서 써봅시다. (do_module.py)

import make_m as m #from make_m import *와 같은 의미입니다.

print(m.int_a)
print(m.String_b)
print(m.Bool_c)
print(m.list_d)
print(m.tuple_e)
print(m.dic_f)
print(m.set_g)

m.module_T()

cal = m.calucate()
cal.add(80,60)
cal.sub(80,60)
cal.div(80,60)
cal.floordiv(80,60)

 

모듈의 종류

- random 모듈

난수를 발생시키는 모듈입니다.

여기서, 난수란 0.0~1.0 사이의 실수 값을 말합니다.

import random as r
#난수를 출력합니다.
r.random() 
#random() : 0부터 1이상의 임의의 float(부동소수점 숫자)를 리턴합니다.

##1이상 10이하의 값(정수)을 랜덤으로 나옵니다.
#radint(최소,최대) : 입력 파라미터인 최소부터 최대까지 중 임의의 정수를 리턴합니다.
r.randint(1,10)

#randrange(시작,끝,[간격]) : 입력 파라미터인 시작부터 끝값까지 숫자중 임의의 정수를 리턴합니다.
r.randrange(1,10)
#1이상 10미만이면서 2의 배수 값으로 나옵니다.
r.randrange(1,10,2)
r.randrange(10) #0부터 9사이의 임의의 정수가 나옵니다.

#uniform(최소,최대) : 입력 파라미터인 최소부터 최대까지 중 임의의 부동소수점 자리를 리턴합니다.
r.uniform(20,50)

#1부터 45까지 중 6개 뽑습니다.
r.sample(range(1,46),6) 

dice = [1,2,3,4,5,6]
#dice(시퀀스 객체) 중 임의의 값 하나를 선택합니다.
r.choice(dice)
#dice(전달받은 자료형 내용을) 임의의 순서대로 섞어줍니다. 리턴 값 없습니다.
r.shuffle(dice)
dice
r.shuffle(dice)
dice

#참고로, sample(범위,개수)를 같이 쓰기도 합니다.
#sample(범위,개수
# 자료형을 인자로 전달받아서 임의의 값을 필요한 개수만큼 리스트로 반환합니다(중복제거)

 

- time

시간과 관련된 모듈을 말합니다.

import time
#루프문(반복문)안에서 많이 사용됩니다.
#일정한 시간 간격을 주기위해 사용하는 함수입니다.(프로그램을 지연합니다.)
time.sleep(4)

#1970년 1월 1일 0시 0분 0초(UTC: Universal Time Coordinated 세계 협정 표준시) 기준으로
#현재 시간을 실수 형태로 반환하는 함수입니다.
time.time()

#time.time()에 의해 반환된 실수값을 이용하여 struct_time(시퀀스 객체 속성)
#현재시간을 년도(tm_year), 월(1-12)(tm_mon), 일(tm_mday) 시(0-23)(tm_hour),
#분(tm_min), 초(tm_sec), 몇번째 요일(tm_wday)(월:0~일:6)
#올해의 몇번째 날(tm_yday)(1월 1일부터 누적된 날짜), 
#썸머타임(일광절 약 시간제 0,1,-1) 여부의 형태를 바꾸어주는 함수입니다.
#함수를 호출할 때 
#인자가 없을 경우에는 현재 날짜와 시간을 튜를로 반환하고
#인자가 있을 경우 UTC 기준으로 그 초만큼 지난 날짜와 시간을 튜플형태로 반환합니다.
time.localtime() 

#time.localtime에 의해 반환된 튜플 형태의 값을 인수로 받아서 알아보기 쉬운 형태로 리턴하는 함수이다.
#time.ctime()와 같은 의미이지만 asctime을 좀더 간단하게 표시하는 함수입니다.
time.asctime(time.localtime(time.time()))

#UTC 기준의 현재 시간
time.gmtime()

#time.strftime('포맷', 시간객체)로 날짜 시간을 포맷에 맞춰서 출력해줍니다.
time.strftime("%Y-%m-%d %H:%M:%d",time.localtime(time.time()))
time.strftime("%Y년 %m월 %d일",time.localtime(time.time()))

형식지정자(포맷코드)

%Y 년도 축약 %Y(2015) -> 15
%A 요일 축약 %A(Sunday)->Sun
%B 월 축약 %B(January)->Jan
%C 날짜와 시간을 출력 %C
%d 날(0~31)로 출력  
%H 시간을 24시간(0~23)으로 출력  
%I 시간을 12시간(0~12)으로 출력  
%j 누적날짜 표현(001~366)으로 출력  
%m 달(01~12)로 출력  
%M 분(01~59)로 출력  
%p 오전, 오후 AM,PM
%S 초(00~61)로 출력  
%U 누적주 일요일 시작(00~53)
%w 요일 0~6
%W 누적주 월요일 시작(00~53)
%x 날짜 출력 21/05/29
%X 시간 출력 22:19:50
%Z 시간대 출력 대한민국 표준시

- calendar

달력을 표시해주는 모듈입니다.

import calendar as cal 

cal.calendar(2021) #2021년 달력을 보여줍니다.
print(cal.calendar(2021)) #정갈된 2021년 달력입니다.

cal.prcal(2021) #2021년의 전체달력을 출력합니다.

cal.prmonth(2021,5) #2021년 5월의 달력입니다.

#월:0,화:1,수:2,목:3,금:4,토:5,일:6 로 반환
cal.weekday(2021,5,29)

#입력받은 5월의 1일이 무슨 요일로 시작하는지와
#5월의 마지막일자를 튜플로 반환해주는 함수입니다.
cal.monthrange(2021,5)

 

- math

수학 함수 모듈입니다.

import math as m
#원주율
m.pi

#자연상수
m.e

#제곱
m.pow(3,5)

#제곱근
m.sqrt(16)

#팩토리얼
m.factorial(6)

#log
m.log(10) #10은 진수
2*m.log(25,5) #25는 진수, 5는 밑인 로그에 2를 곱한 값이 나옵니다.
m.log10(100) #밑이 10이고 진수가 100인 로그입니다.

#내림, 올림
#올림
m.ceil(4.14)
m.ceil(-4.14)
#내림
#floor()함수는 무조건 아래만 향해 내림합니다.
m.floor(4.14)
m.floor(-4.14)
#trunc()함수 내림을 하더라도 0으로 향합니다.
m.trunc(4.14)
m.trunc(-4.54)

그 외 수학 함수 모듈은 아래와 같습니다.

acos(x) 아크 코사인
asin(x) 아크 사인
atan(x)
atan(y,x)
아크 탄젠트
y/x 아크 탄젠트
cos(x) 코사인
sin(x) 사인
tan(x) 탄젠트
degrees(x) 각도변환
radians(x) 라디안으로 표현된 각도를 60분법 각도로 변환

참고로, 내장함수에 있는 수학함수에 관한 코드는 아래와 같습니다. 

#반올림 : 두 개의 인자를 입력받습니다.
#두번째 인자를 생략할 시 소수 첫째자리에서 반올림합니다.
round(4.51)
round(-4.161,2)

#사사오입 원칙 : 반올림할 자리의 수가 5이면 반올림할 때
#앞자리 숫자가 짝수면 내림하고 홀수면 올림합니다.
round(4.6)
round(4.5) 

 

위 코드를 입력해보려고 보신 분이라면 아시겠지만 보편적으로 알고 있는 반올림과 다른 것이 있지 않나요?  알고 있는 반올림은 5이상이면 올림을 하면서 그 미만이 되는 자리의 수는 버리고 그 외의 0~4까지면 버리는 것인데 다릅니다. 이것을 통해 반올림을 구현하기 위해서는 직접 만들어써야 한다는 것을 알 수 있습니다.

 

그 외 내장 수학함수에 관한 코드는 아래와 같습니다.

#모두 더하는 함수로, 리스트 값을 제공해야 합니다.
sum([1,2,4])

#요소들 중 가장 큰 값을 알려주는 함수로, 리스트 값을 제공해야 합니다.
max([1,2,4])

#요소들 중 가장 작은 값을 알려주는 함수로, 리스트 값을 제공해야 합니다.
min([1,2,4])

#절댓값을 구하는 함수입니다. 참고로, 복소수의 경우에는 크기를 구합니다.
abs(-1)

#5^4의 결과가 나옵니다. 거듭제곱을 구하는 함수입니다.
pow(5,4)
#5^4 을 2로 나눈 결과가 나옵니다. 
pow(5,4,2)

#6을 5로 나눈 몫과 나머지를 구하는 함수입니다. 튜플로 반환합니다.
divmod(6,5)

- sys

파이썬 인터프리터가 제공하는 변수들과 함수들을 직접 제어할 수 있게 해주는 모듈입니다. (다시 말해, 파이썬 인터프리터와 인터프리터가 실행중인 환경(자신의 시스템)에 관련된 기능들을 갖고 있습니다.)

import sys
print(sys.argv) #명령행에서 인수를 전달합니다.
exit() ctrl+Z(원도우 환경), ctrl+D(유닉스나 맥환경)를 눌러서
대화형 인터프리터(셀)를 종료하는 기능합니다.
path.append() 자신이 만든 모듈을 불러서 사용하기 위해
위치를 지정하는 명령합니다.

- webbrowser

자신의 시스템에서 사용하는 웹 브라이저가 자동으로 실행되게 하는 모듈입니다.

- os

환경 변수나 디렉터리, 파일 등의 OS 자원을 제어하는 모듈입니다.

import os

#현재 사용하고 있는 컴퓨터의 운영체제가 무엇인지 알려줍니다.
os.name

#내 시스템의 환경 변수값을 알고 싶을 때 씁니다. 
#시스템 정보를 딕셔너리 객체로 돌려줍니다.
os.environ
data = os.environ
for i in data.keys():
  print("Key:",i,"Value:",data[i])

#디렉터리 위치 돌려받기
os.getcwd()

#지정한 디렉터리 내의 모든 파일과 디렉터리의 리스트를 리턴합니다.
#디렉터리를 지정하지 않으면 현재의 working directory를 사용합니다.
os.listdir()
chdir(path) 디렉터리 위치를 변경합니다.
mkdir(디렉터리) 디렉터리를 생성합니다.
rmdir(디렉터리) 디렉터리를 삭제합니다.
단, 디렉터리가 비어있어야 삭제가 가능합니다.
unlink(파일명) 단일 파일을 삭제할 때 씁니다.
system("명령어") 시스템의 유틸리티나
dos 명령어들을 파이썬에서 호출합니다.
popen 시스템 명령어를 실행시킨 결과 값을
읽기모드의 파일 객체로 돌려줍니다.
rename(src,dst) src 이름파일을 dst이름으로 바꿉니다.

- keyword

import keyword
keyword.kwlist #예약어 알려줍니다.

- turtle

쉬우면서도 재미있는 그래픽 모듈입니다.

import turtle as t
t.shape('shape')
t.color('red') #빨간색으로 변합니다.
t.bgcolor('black') #배경색을 검정색으로 바꿉니다.
t.title("Turtle Module Learning") #제목을 바꿉니다.
t.forward(100) #앞으로 100갑니다.
t.penup() #펜 올립니다.
t.forward(100) #앞으로 100 갑니다.
t.left(90) #왼쪽으로 90도 회전입니다.
t.pendown() #펜 내립니다.
t.forward(50) #앞으로 50 갑니다.
s=t.Turtle()
s.shape('turtle')
s.color('white')
s.right(90) #오른쪽으로 90도 회전입니다.
s.forward(50)
s.penup()
s.goto(-200,200) #해당좌표로 이동
s.write("Hi IT journey")
s.goto(-200,200) 
# 현재 거북이 위치에 가운데 정렬로 크기가 20이고 굵은 글씨로 Hi IT journey 를 씁니다.
s.write("Hi IT journey",False,"center",("",20,"bold")) 

 

**turtle을 이용해 다각형을 그려봅시다.

더보기
import turtle as t
t.shape('trutle')
n = int(input())
t.color('skyblue') #선의 색
t.begin_fill() #안의 색칠하기 시작점
for i in range(n):
  t.fd(100)
  t.rt(360/n)

 

편집기에 따라 코드가 끝난 후 바로 종료될 경우 마지막에 t.mainloop()를 추가합니다.

거북이 이동(명령 내리기)
명령 간단명령 입력 설명
forward(x) fd(x) 이동량 x x만큼 전진
backward(x) bk(), back() 이동량 x x만큼 후진
right(a) rt(a) 회전각 a 좌로 a만큼 돌기
left(a) lt(a) 회전각 a 우로 a만큼 돌기
goto() setpos() 절대좌표 x,y 절대좌표(x,y)로 이동
setx() - 좌표 x x좌표 지정
sety() - 좌표 y y좌표 지정
setheading(a) seth(a) 각도 a 진행방향 정하기
home() - - 홈 위치로 이동
circle(r,a) - 반지름 r, 각도 a 원 그리기
dot(s,c) - 크기 s, 색상 c 현재 위치에 점찍기
stamp() - - 현재 위치에 스탬프 찍기
speed() - 속도 spd(0~10)
1 : slowest
3 : slow
6 : normal
거북이 속도지정
spd가 크면 클수록 빠름
거북이 이동(상태 읽기)
명령 간단명령 입력 설명
position() pos()    
towards(x,y) - 절대좌표 x,y 현재위치와 (x,y)를 잇는
선분과 거북이 진행방향과의 
사이각 반환
xcor() -   현재위치의 x좌표 반환
ycor() -   현재위치의 y좌표 반환
heading() -    현재의 진행방향을 반환
distance(x,y) - 절대좌표 x,y 현재위치와
(x,y)까지의 좌표를 반환
거북이 외관 설정(보이기/감추기 명령)
명령 간단명령 입력 설명
showturtle() st()   거북이 보이기
hideturtle() ht()   거북이 감추기
isvisible() -   거북이가 보이는 
상태면 True 반환
거북이 외관 설정(거북이 모양)
명령 간단명령 입력 설명
shape(s) - 모양 : s
'arrow','turtle','circle'...
거북이 모양지정 등..
resizemode(m) - 모드 : m
'auto','user','noresize'
거북이 감추기
shapesize(~) turtlesize() ~
strench_w, strech_l, outline
거북이 폭과 길이의 스케일과
외곽선의 두께를 지정
shearfactor(s)   쉬어각도의 탄젠트 s 거북이를 변형시킨다.
settiltangle(a)   절대 틸트각 : a 진행방향과 무관하게
거북이를 각도 a로 회전
tilt(a)    틸트각도 : a 진행방향과 무관하게
거북이를 틸트 각도를 a만큼
더 회전
shapetransform(T)   변환행렬 T
T= t11, t12, t21, t22
거북이 변환행렬을 지정
또는 반환
get_shapepoly()     거북이 다각형의
좌표들을 반환
펜 (거북이 자취) 설정- 펜의 상태관련
명령 간단명령 입력 설명
pendown() pd(), down()   펜 내리기
penup() Pu(), up()   펜 올리기
pensize(w) width(w) 두께 : w 펜두께를 w로 바꾸기
pen(dict) - 사전식 dict 펜의 여러 데이터를
사전식으로 설정
isdown() - - 펜이 down상태이면 
True 반환
펜(거북이 자취)설정 - 칼라설정
명령 간단명령 입력 설명
color(pc,fc)   펜색 : pc
채우기 색 : fc
색 문자열 또는
RGB 값
펜 색, 채우기색을
동시에 지정
pencolor(pc)   펜색 지정
fillcolor(fc)   채우기색 지정 관
펜(거북이 자취)설정 - 채우기 관련
명령 간단명령 입력 설명
filling() -   채우기가 되었으면 True 반환
begin_fill() -   채우기 시작
end_fill() -   채우기 종료
기타 명령
명령 간단명령 입력 설명
reset() -   화면 지우고
거북이를 초기화
 clear() -   화면만 지우기
write(~) - 별도참조 ~ 화면에 글자

참고로, 웹 색상에 대한 링크는 https://ko.wikipedia.org/wiki/%EC%9B%B9_%EC%83%89%EC%83%81 입니다.

 

이전 발행글

Python - 클래스 2편

Python - 클래스 1편

Python-함수

Python - 제어문

Python-자료형(사전형,집합)

Python-자료형(리스트,튜플)

Python - 자료형 (숫자형,문자열,불린형)

Python - 내장함수 1편

728x90
반응형
Comments