[Python] 함수
- Python/기초
- 2020. 4. 7.
함수 만드는 방법을 설명하겠습니다.
먼저 함수는 입력(input) 값에 대해 출력(output)를 하는 역할을 합니다.
수학에서의 함수과 비슷합니다. 한개 값을 넣으면 그 값에 따라 값이 나옵니다. 예를 들면, f(x) =2x 라는 함수가 있을때, x에 1을 넣으면 2가 나옵니다. 파이썬에서 함수도 이런 역할을 합니다.
내장함수(built-in function)
파이썬 내부에 이미 정의되어 있는 함수가 있는데 이 함수를 내장함수라고 합니다. 많이 쓰는것 3개만 살펴보고 넘어가겠습니다.
- range 함수는 앞 포스팅에서도 많이 썼는데 리스트를 생성하는 함수입니다. 범위는 구간으로 표현하면 [start,end) 가 되겠습니다. 자세한건 앞 포스팅을 봐주시기 바랍니다. ex) range(0,10) = [0,1,2,3,4,5,6,7,8,9]
- sum 함수는 리스트나 튜플의 원소값을 모두 더하는 함수입니다.
a = [1,2,3,4]
sum(a)
- len 함수는 리스트나 튜플의 길이. 즉, 원소개수를 출력하는 함수입니다.
a =[1,2,3,4]
print(len(a))
함수 만들기
내장함수는 갖다 쓰면 그만이지만 함수를 만드는건 또 다른 얘기입니다. 내가 만들어야 하고 막상 만들려고 하면 막막하기만 합니다. 그렇다고 안 할 수는 없습니다. 일일히 코딩을 해서 만들기에는 시간적 한계가 있어서 반복적으로 쓸것같으면 함수로 만들어 입력을 넣으면 출력으로 해놓는다면 이것만큼 편한게 없기 때문에 큰 프로젝트를 할수록 많이 만들어야 하는게 함수입니다.결론적으로 얘기하면 코딩을 한 걸 잘 정리해서 함수화 하는게 주된 목적이 되겠습니다.
함수를 만들기 위해서는 일단 def 라고 입력을 하고 시작합니다. def 옆에 함수이름을 씁니다. 자신이 원하는 이름을 쓰면 됩니다. 자주 쓸 함수일수록 기억하고 싶고 알기 쉽게 하는것이 좋습니다. 함수 이름이 길고 쓰기 어렵게 하면 쓸 때마다 너무 힘이 들게 됩니다. 이름을 쓰고 옆에 가로를 넣습니다. 가로 안에는 변수가 들어갑니다. 파이썬에서는 인자(parameter) 라고 합니다. 함수를 만든다고 모두 인자값이 있을 필요는 없습니다. 인자는 어떤 방식으로 함수를 할지에 따라서 달라질테니 먼저 생각을 하시는게 좋습니다.
def add(x,y):
return x+y
add(3,5)
함수의 종료를 나타내는 return은 출력값으로 무엇을 나오게 할지 정하는 명령어라 생각하시면 되겠습니다. 함수에 반드시 return 이 있어야 하는건 아닙니다. return 이 었으면 코드 진행하고 종료되므로 종료가 안되거나 무한루프에 돌지 않으니 걱정 않으셔도 됩니다. 아무튼 add(x,y)라는 더하기 함수를 만들었습니다. add(3,5)를 입력하면 3+5 = 8 로 8이 출력이 되는 것을 볼 수 있습니다.
Default parameter(기본 인자)
기본인자는 인자의 기본값을 지정하는 것을 의미합니다. 함수를 보면서 설명하겠습니다.
def add(x,y,z=5):
return x+y+z
add(10,2,)
제가 add(10,2,)로 z 인자에 아무것도 넣지 않았음에도 z는 5로 처리되어서 17이 출력되는 것을 볼 수 있습니다.
이렇듯 제가 인자에 아무값을 넣지 않으면 기본값으로 대체해서 함수가 작동하도록 만들수 있습니다.
다만, 주의할점은 기본인자가 일반 인자 앞에 위치해서는 안됩니다.
올바른 예)
- def add(a,b,c=5)
- def add(a,b=1,c=5)
- def add(a=1,b=1,c=5)
올바르지 않은 예)
- def add(a=1, b,c)
- def add(a,b=1,c)
- def add(a=1,b=1,c)
뒤에 일반 인자가 있으면 에러가 나므로 주의하시기 바랍니다.
기본인자의 이해를 돕기 위해 print함수를 살펴보겠습니다.. Jupyter note 에서 print를 치고 shift+tap을 누르면 해당함수의 인자값 정보가 나옵니다.
보시면 sep와 end, file, flush 이 있는 걸 볼 수 있는데 이것이 다 인자입니다.
기본인자 중 sep와 end를 살펴보면, sep 는 출력을 할때 콤마의 사이는 한칸 띄게 해놓았고, end는 \n 으로 줄바꿈으로 한것을 볼 수 있습니다.
print(1,2,3, sep='!',end='%%%')
print(2,3,4)
sep에 !를 넣고 end에 %%%을 넣었더니 다음과 같이 출력이 되는 걸 볼 수 있습니다.
Keyword parameter(키워드 파라미터)
가끔 키워드 파라미터를 쓰는 개발자들이 있어서 알고는 있어야 합니다. 예를 보겠습니다.
def add(x,y,z):
return x+y+z
add(x=10,z=3,y=30)
키워드 파라미터는 인자를 지정하는 것을 말합니다. 인자가 지정이 되었으니 순서 상관없이 x가 뭔지 y가 뭔지 z가 뭔지 인지하고 함수가 작동됩니다.
이상으로 함수에 대한 기본개념은 마치고 다음 포스팅에 전역변수와 지역변수 개념과 *을 쓰는 방법을 포스팅하겠습니다.
'Python > 기초' 카테고리의 다른 글
[Python] Lambda(람다) 함수 (0) | 2020.04.12 |
---|---|
[Python] 전역변수, 지역변수 (0) | 2020.04.09 |
[Python] for 반복문 (0) | 2020.04.03 |
[Python] while 반복문 쓰기 (0) | 2020.04.02 |
[Python] 조건문(if, elif, else) (0) | 2020.03.30 |