▶함수란 무엇인가
함수파트에 들어가기 앞서 함수라는게 무엇인지 알아 볼 필요가 있다.
만약 고등학교 수학을 포기하지 않았다면 수학시간에 함수라는 단어를 들어봤을 것이다.
ex) y = 5x+7
프로그래밍에서 함수는 이런 수학에서의 함수의 역할도 할 뿐만 아니라 다양한 역할을 수행한다.
프로그래밍에서의 함수는 인풋이 들어가면 함수 박스를 지나 아웃풋이 나오게되는 형태이다.
▶함수를 사용하는 이유
그렇다면 함수가 뭐가 좋길래 사용할까? 프로그래밍을 해봤다면 똑같은 내용을 반복해서 써줘야하는 경우가 종종 있다는것을 알것이다. 이때 필요한것이 바로 함수이다. 즉, 함수는 반복할만한 가치가 있는 부분을 박스로 묶어서 어떠한 인풋값에 따른 아웃풋 결과를 내놓도록 하는 마법의 박스다.
이러한 마법의 박스를 사용하면 프로그램의 흐름을 잘 이해할 수 있도록 도와주고 만약 오류가 났다면 어디에서 오류가 났는지 쉽게 알 수 있다. 또한 메모리 절약도 된다. 안쓸이유가 없다.
▶파이썬에서의 함수
▷매개변수는 뭐고 인수는 뭐지?
함수에대해서 본격적으로 알아보기 전에 매개변수(parameter)와 인수(arguments)에 대해서 알 필요가있다.
매개변수는 함수에 입력으로 전달된 값을 받는 변수
인수는 함수를 호출할 때 전달하는 입력값을 의미한다.
def add(a, b): # a, b는 매개변수
return a+b
print(add(3, 4)) # 3, 4는 인수
#출처 : 점프 투 파이썬
이렇게 매개변수는 함수를 선언할 때 함수 이름 옆에 붙어있고, 인수는 함수를 불러올 때 이름 옆에 붙어있다.
한마디로 정리하면 매개변수는 인수값을 받는 변수, 인수는 함수에 주는 값이라고 할 수 있겠다.
파이썬에서는 입력값과 리턴값의 존재유무에 따라서 함수가 4가지 유형으로 나뉜다.
▷일반적인 함수
def 함수_이름(매개변수):
수행할_문장
...
return 리턴값
입력값이 있고 리턴값이 있는 기본적인 함수이다.
예를 들자면
def add(a, b):
result = a + b
return result
a = add(3, 4) #사용방법
print(a)
>>>7
이런식으로 함수에 대한 return값을 최종결과로 줄 수 있다.
▷입력값이 없는 함수
입력값이 없고, 리턴값만 있는 함수를 뜻한다.
def say():
return 'Hi'
a = say() #사용방법
print(a)
>>>Hi
이런식으로 입력값은 없지만 return 값인 Hi를 반환한다.
▷리턴값이 없는 함수
리턴값이 없는 함수도 존재한다.
def add(a,b):
print("%d, %d의 합은 %d입니다." %(a, b, a+b))
add(3,4) #사용방법
>>>3, 4의 합은 7입니다.
이런식으로 리턴값이 없는 함수도 있다.
여기서 add함수를 a변수에 넣어서 a의 값을 출력해보면 None이 나오는데,None이 나온다는 것은 리턴값이 없다는 뜻이다.
▷입력값, 리턴값이 없는 함수
두개 다 없는 함수가 존재할 수 있을까? 가능하다.
def say():
print("Hi")
say() #사용방법
>>>Hi
이런식으로 입력값, 리턴값이 없는 함수를 사용할 수 있다.
▷매개변수 지정하여 호출하기
def sub(a, b):
return a - b
result = sub(a=7, b=3) # a에 7, b에 3을 전달
print(result)
>>>4
이런식으로 바로 변수에 return 값을 저장할 수 있다.
▶입력값이 몇개일지 모르는 상황에서는?
인풋이 몇개가 들어올지 모르는 상황도 있다. 그럴때는 매개변수 앞에 *를 붙여주면된다.
매개변수 앞에 *을 붙이면 입력값을 전부 모아 튜플로 만들어준다.
따라서 인풋이 몇개가 들어오든 그것을 튜플로 바꿔서 적용시켜준다.
>>> def add_many(*args):
... result = 0
... for i in args:
... result = result + i # *args에 입력받은 모든 값을 더한다.
... return result
#출처 : 점프 투 파이썬
만약 add_many(1,2,3,4,5)를 실행시키면 args는 (1,2,3,4,5)가 되고 result는 1+2+3+4+5가 되어 return 된다.
▶return의 다른 사용법
return은 특별한 상황에서 함수를 빠져나갈때에도 사용된다.
>>> def say_nick(nick):
... if nick == "바보":
... return
... print("나의 별명은 %s 입니다." % nick)
이런식으로 nick에 "바보"가 입력되면 return을 만나서 아무런 반환값없이 함수가 종료된다.
▶lambda 예약어는 뭐지?
lambda는 def와 같이 함수를 생성할 때 사용되는 예약어이다.
주로 def를 사용 할 정도로 복잡하지 않은 함수를 생성할 때 사용된다. 우리말로는 "람다" 라고 읽는다.
함수_이름 = lambda 매개변수1, 매개변수2, ... : 매개변수를_이용한_표현식
기본구조는 이러하다.
예시로 만들어보면
>>> add = lambda a, b: a+b
>>> result = add(3, 4)
>>> print(result)
7
add는 a와 b를 매개변수로 하고 a와 b를 더해주는 함수인것을 알 수 있다.
람다로 만든 함수는 return명령어가 없어도 표현식의 결과를 리턴한다.
람다로 만든 함수를 def로 만들어보면
>>> def add(a, b):
... return a+b
...
>>> result = add(3, 4)
>>> print(result)
7
이렇게 만들 수 있는데, 확실히 짧고 복잡하지 않은 함수는 람다로 만드는것이 유리해보인다.
'학과 공부 > Python' 카테고리의 다른 글
[Python] 내가만든 프로그램 .exe 파일로 만들기 (0) | 2024.01.29 |
---|---|
while문, for문 [Python] (0) | 2024.01.18 |
if, elif, else, in, not in, 비교연산자 [Python] (0) | 2024.01.16 |
format()함수, map()함수, split()함수[Python] (1) | 2024.01.10 |
식별자, 줄바꿈, 자료형, 변수[Python] (0) | 2024.01.10 |