Level 03 |
01_[함수] 코드 없이 알아보기 |
1_함수는 상자입니다.
함수는
상자를 의미하는 '함' 과
숫자를 의미하는 '수' 가 합쳐진 단어이죠.
함수라는 것을 간단하게 생각하면 아래와 같습니다.
1) 숫자가 상자에 들어간다.
2) 상자 안에서 무슨 일이 일어난다.
3) 결과가 상자 밖으로 나온다.
이를 그림으로 표현하면 이렇게!
이렇게 간단한 것을 수학에서는 이렇게 표현합니다.
f(x) = x + 1 # 첫 번째 줄
f(3) = 4 # 두 번째 줄
첫 번째 줄과 두 번째 줄을 쉽게 풀어서 이해해 보겠습니다.
[첫 번째 줄]
f(x)
1) 상자의 이름은 f 입니다.
2) 상자에 들어가는 것은 x 입니다.
x + 1
1) 상자 안에서 x + 1 이라는 일이 일어납니다.
[두 번째 줄]
f(3)
1) f 라는 이름을 가진 상자에 3 을 넣어서 실행합니다.
4
1) 함수를 실행하고 난 후 상자 밖으로 나온 값은 4 입니다.
Level 03 |
02_[함수] 함수의 구조 |
1_들여쓰기와 콜론
설명 01
SHAPE \* MERGEFORMAT
def 함수이름(함수 안으로 들어가는 값):
함수 안에서 일어나는 일
return 함수 밖으로 내보낼 값
예)
def oneplus(a):
b = a + 1
return b
기존에 다루었던 조건 / 반복문과 동일한 부분이 있습니다.
바로 들여쓰기와 콜론 입니다.
if 문을 어떻게 만들었는지 보고, 함수를 만드는 방법과 어떤 공통점이 있는지를 알아보겠습니다.
if 불리언 :
들여쓰기 된 부분
1) 맨 처음 줄에서 시스템 예약어인 if 를 사용하여 if 문을 만들 것임을 명시합니다.
2) if 오른쪽에 참 / 거짓을 판별하고자 하는 불리언을 넣습니다.
3) 가장 오른쪽에 콜론 ( : ) 을 붙였습니다.
4) 이후, 한 덩어리로 묶이는 부분을 전부 들여쓰기 하였습니다.
이 들여쓰기 문법은 함수를 만들 때에도 정확히 동일하게 사용됩니다.
def 함수이름(입력값):
들여쓰기 된 부분
1) 맨 처음 줄에서 시스템 예약어인 def 를 사용하여 함수를 만들 것임을 명시합니다.
2) def 오른쪽에 함수의 이름과 함수에 들어갈 입력값을 명시합니다. 입력값은 소괄호로 감싸서 넣습니다.
3) 가장 오른쪽에 콜론( : ) 을 붙였습니다.
4) 이후, 한 덩어리로 묶이는 부분을 전부 들여쓰기 하였습니다.
어떤가요?
if 문을 만드는 방법과 거의 동일하고, 약간의 차이만 있습니다.
함수는 코드를 묶어서 한 덩어리로 나타내는 것입니다.
그래서, 코드의 묶음을 우리는 함수라고 표현하는 것이지요.
if 문에서는 만들 때 따로 이름을 정하지 않고, 바로바로 실행이 되었습니다.
함수는 해당 함수에 들어있는 코드의 묶음을 실행하고 싶을 때마다 이름을 불러서 실행합니다.
예)
함수이름(입력값)
oneplus(3)
이렇게 말이죠.
2_입력값과 결과값, 꼭 필요할까?
함수는 3 가지 요소로 이루어져 있습니다.
1) 들어가는 값(입력값)
2) 내부 코드의 묶음(안에서 무슨 일이 벌어짐)
3) 나오는 값(결과값)
입력값과 결과값은 각각 있을 수도 있고, 없을 수도 있습니다.
입력값은? -> 함수가 돌아가기 위해 필요한 '재료' 입니다.
결과값은? -> 함수가 끝난 이후에 밖으로 빼서 사용하고 싶은 '결과물' 입니다.
재료가 함수 안에 이미 있다면, 혹은 함수 밖에 있는 것을 가져와 쓸 수 있다면
-> 입력값이 필요 없습니다.
함수 안에 들어있는 코드의 묶음이 '실행되기만' 하고, 결과물이 필요 없다면
-> 결과값이 필요 없습니다.
함수이름 오른쪽 소괄호 안에 우리는 함수 안에 들어갈 입력값을 명시 하였는데요
이를 빈 칸으로 두게되면 입력값이 없는 함수가 완성 됩니다.
결과값은 함수 안에 결과값을 명시하는 시스템 예약어인 return 을 적었는데요,
함수 안 들여쓰기 부분에 return 을 적지 않으면?
결과값이 없는 함수가 완성 됩니다.
[입력값이 없고 결과값이 있는 함수]
def 함수이름():
들여쓰기 된 코드
들여쓰기 된 코드
return 결과값
[입력값이 있고 결과값이 없는 함수]
def 함수이름(입력값):
들여쓰기 된 코드
들여쓰기 된 코드
[입력값도 없고 결과값도 없는 함수]
def 함수이름():
들여쓰기 된 코드
들여쓰기 된 코드
return 결과값
3_함수의 태생적 한계??
우리가 함수를 만들 때, 입력값을 하나 있는 것으로 만들게 되면...
def sample(input):
print(input)
예를 들어, 이렇게 입력값 하나를 받아 이를 출력하는 함수를 만들었을 때
1) 아무 것도 넣지 않고 실행하거나
2) 2개가 넘는 입력값을 넣고 실행하게 되면
[이미지 첨부]
[이미지 첨부]
이렇게 에러가 나오게 됩니다.
그 이유는 함수가 처음 만들어질 때 입력값이 하나 있는 것으로 태어났기 때문에,
이 친구는 태생이 '입력값이 하나 있는 함수' 입니다.
그래서, 입력값이 하나 있는 것으로 태어났으므로
실행할 때에도 입력값을 하나만 넣어주어야 합니다.
함수를 만들 때 입력값을 여러 개 만들고자 한다면?
def multiply(a, b):
c = a * b
return c
이렇게 함수를 만들 때 입력값에 여러 개를 넣어주면 됩니다.
아니, 나는 입력값이 두 개인 함수를 만들고자 하는데
입력을 하지 않아도 돌아가게 만들고 싶은 경우에는???
[기본값 설정] 이라는 것을 해 주면 됩니다.
이것은 영어로 default, 한글로는 디폴트 값 설정 이라고 부르는데요
디폴트 라는 영어단어의 의미는
사전적으로 '기본값' 이라고 하고
이를 간단히 예시를 들어 설명하자면
우리가 리모컨으로 에어컨을 키는 버튼을 눌렀을 때는 생각해볼까요?
에어컨이 켜지면서 시원한 바람이 나올 겁니다.
이를 단계별로 나타낸다면
1) 전원이 켜집니다.
2) 기본으로 설정되어 있는 온도가 지정됩니다.
3) 기본으로 설정되어 있는 세기의 바람이 나옵니다.
에어컨을 킨 이후에
우리가 직접 온도를 지정하지 않아도
우리가 직접 풍량을 지정하지 않아도
이미 기본으로 지정되어있는 설정대로 에어컨에서 시원한 바람이 나오는 것이죠.
이렇게 사용자가 직접 수치를 조정하지 않아도 기본적으로 설정되어 있는 값을 '디폴트 값' 이라고 합니다.
파이썬에서 함수를 만들 때, 사용자가 따로 값을 입력하지 않아도 기본값으로 실행되게 만드는 방법을 알아볼까요?
def multiply(a = 2, b = 3):
c = a * b
return c
multiply() # 실행시 6 이 나옵니다.
multiply(3, 4) # 실행시 12 가 나옵니다.
분명히 입력값이 2 개인 것으로 만든 함수인데도 불구하고
입력값을 넣지 않아도, 미리 설정해 둔 기본값인 a = 2, b = 3 으로 실행되는 것을 알 수 있습니다.
물론, 내가 직접 입력값을 넣었을 때에도 아무 문제 없이 실행되는 것을 보았습니다.
'[일상봇 만들기] 나의 하루하루를 도와줄 친구!' 카테고리의 다른 글
level_04_part_1 (0) | 2019.07.05 |
---|---|
level_03_part_2 (0) | 2019.07.03 |
level_02_part_2 (0) | 2019.06.24 |
level_02_part_1 (0) | 2019.06.20 |
mok_cha (0) | 2019.06.20 |