이번엔 파이썬(Python)의 함수(Function)에 대해 알아볼겸
간단한 로또(Lotto) 추첨 프로그램을 작성해보겠습니다(로또 당첨되고 싶드아-_-)
import random //임의의 숫자를 뽑기위해 이용
def getNumber() : //반환값이 있는 함수 정의, 파라미터는 없음
return random.randrange(1, 46)
/**************************************************************************************
참고 :
1. 파이썬(Python)의 함수(Function) 매개변수(Parameter)
def getNumber(para1, para2, ...)과 같이 파라미터 여러 개 정의 가능
def getNumber(*para)과 같이 선언하면 매개변수(Parameter)의 수와 관계없이 튜플(Tuple) 형식으로 넘어옴
def getNumber(**para)과 같이 선언하면 매개변수(Parameter)가 딕셔너리(Dictionary) 형식으로 넘어옴
2. 함수(Function)의 반환값
함수(Function) 내에 return 구문이 존재하면 반환값이 존재하고 없으면 반환값이 없다
**************************************************************************************/
lotto = [] //로또번호 6개를 저장하기 위한 리스트(List) 선언
print("Start Lotto!!\n")
while True : //로또번호 6개가 다 뽑힐 때까지 무한루프
if len(lotto) >= 6 : //로또번호 6개가 다 뽑혔으면 종료
break
num = getNumber() //위에 선언한 함수 호출 반환값이 있는 함수이므로 num에 반환값을 저장
if lotto.count(num) == 0 : //로또번호를 저장하는 리스트 lotto에 해당 번호가 있는지 체크
lotto.append(num) //없을 경우 저장
print "Winning numbers : ",
lotto.sort() //로또번호를 오름차순으로 정렬한 후 출력
for i in range(0, len(lotto)) :
print "%d\t" % lotto[i],
print ""
함수(Function)는 학창 시절 수학 시간에 배운 함수(Function)의 개념과 동일합니다
input → Function() → output
함수(Function)에 대한 자세한 설명보단 사용법을 간단히 위의 코드에 적었습니다
사실 함수(Function)를 왜 사용하는지가 중요합니다
프로그램을 작성하다보면 동일한 일을 수행하는 코드가 존재합니다
그런데 이것을 일일이 매번 작성한다면 코드도 길어지고 지저분해집니다
그런데 만약 그 일을 수행하는 녀석이 있고 일을 다 넘긴다면?? 분명 간결해질 것입니다
물론 일을 하는 녀석은 바쁘겠죠..-_-
이런걸 재사용성이라고 하는데 사실 이런 용어를 아는거보다
왜 이렇게 프로그램을 작성해야 좋은지를 이해해하는 것이 중요할 것 같습니다
자 이런 관점에서 나아가 파이썬(Python)의 모듈(Module)에 대해 알아보겠습니다
모듈(Module)은 앞서 이야기한 것의 연장선입니다
만약 위에서 작성한 로또 추첨 프로그램에서
getNumber() 함수가 같은 a.py 에 없고 다른 b.py에 있다면??
저 위의 프로그램은 getNumber() 함수를 찾지 못하고 예외가 발생할 것입니다
자 그럼 b.py에 있는 getNumber() 함수를 a.py에 다시 작성해야할까요??
당연히 NO!!
이럴 때 사용하는 것은 위의 코드에서도 보입니다만 import 예약어입니다
우린 getNumber() 함수를 쓰기 위해 import b 를 a.py 에 추가하고 쓰면됩니다
b.getNumber() 이런식으로... 그런데 앞에 b.을 쓰고 싶지 않다면
from b import getNumber 혹은 from b import * 를 추가하면 되겠습니다
b.py가 모듈(Module)이 된 것입니다-_-
※ 참고 ※
추가로 파이썬(Python)의 모듈(Module)은 세가지로 나뉩니다
모듈(Module) | 설명 |
표준 모듈 | 파이썬(Python)에서 제공하는 모듈(Module) |
사용자 정의 모듈 | 사용자가 직접 만들어서 사용하는 모듈(Module) |
서드 파티 모듈 | 파이썬(Python)이 아닌 다른 회사나 기관에서 제공하는 모듈(Module) |
오늘은 여기까지-_-
'Python' 카테고리의 다른 글
[Python] Tk Interface(tkinter) 알아보기_1 (0) | 2019.09.04 |
---|---|
[Python] 순환(Recursion)호출을 이용한 Fractal 프로그램 (0) | 2019.09.03 |
[Python] 문자열 알아보기 (0) | 2019.08.27 |
[Python] LIFO(Last In First Out) 주차장(Parking lot) 구현하기 (0) | 2019.08.21 |
[Python] 기초 문법(Syntax) 다지기 (0) | 2019.08.20 |