함수는 보통 프로그래밍을 하다 보면 똑같은 내용을 반복적으로 작업할 때가 있습니다.
이때 바로 함수를 사용할 때입니다.
예를 들어 더하기 연산을 계속 하는데 그때마다 더하기 연산을 만들면 불필요한 작업이 되는 것이죠
그래서 함수를 따로 만들어 기능을 만든 다음 필요할 때 호출해서 사용만 하면 되는겁니다
다른 여타 언어들과 마찬가지로 파이썬도 함수가 존재합니다.
자바에선 public void sum(int num){ } 등과 같이 사용하죠
파이썬에선 def 라고 선언해주면 됩니다.
명확하죠
자바스크립트에선 function()으로 사용하는 것과 비슷합니다
파이썬 함수의 구조는 다음과 같이 됩니다.
def 함수명(인수) :
수행문장
소스를 보면서 이해해보죠~
1
2
3
4
5
6
7
|
def sum(a,b):
print(type(a))
print(type(b))
return b
v = sum(1,"bb")
print(v)
|
cs |
def sum을 통해 두 값을 합쳐주는 함수를 만들었습니다.
이제 두 값을 더하는 연산이 있을때는 저 함수를 호출만해서 사용하면 되는것이죠
근데 저는 더하기 기능을 넣지 않고 일단 함수 구조를 알아보기 위해 저렇게 했습니다.
두 인자는 무조건 숫자만 갈 수 있는게 아닙니다.
print(type)을 해보면 인자가 들어온 타입을 알 수 있죠
그리고 return을 통해 b값을 돌려줍니다.
b값은 v로 들어가게 되죠
v가 sum 함수 호출한 값을 받게 되니까요~
출력하면 위 사진처럼 나오게 됩니다~
진짜 더하기 기능을 만드려면 아래와 같이 하면 되겠죠~
1
2
3
4
5
|
def sum(a,b):
return a+b
v = sum(1,3)
print(v)
|
cs |
근데 만약 내가 여러개의 덧셈을 하고 싶으면 어떡해 할까요?
어떨때는 3개의 값의 더하기, 어떨 때는 5개의 값으로 더하기를 하고 싶은데 인자가 2개만 있으면 받을 수가 없습니다.
왜냐면 호출은 5개를 하는데 지금 받는건 sum(a, b) 2개의 인자로 받으니까요
v = sum(1,2,3,4,5)이건 못받죠
이런 상황을 대비한 파이썬 기능이 있습니다~
1
2
3
4
5
|
def test(*val): #인자값이 얼마나 올지 모를때 이렇게 사용한다.
for i in val:
print(i)
test(1,"a","c",3)
|
cs |
이렇게 사용하면 됩니다
*val을 사용하면 인자값이 몇개가 오던 값을 다 받아주죠
이렇게 출력이 됩니다~
이걸 더 응용해볼까요?
1
2
3
4
5
6
7
8
9
10
11
12
13
|
def sum_mul(choice, *val):
if choice == "sum":
result = 0
for i in val:
result = result + i
elif choice == "mul":
result = 0
for i in val:
result = result + i
return result
print(sum_mul("sum", 1,2,3,4,5))
|
cs |
첫 번째 인자 값은 choice입니다. 호출할 때 맨 처음 값이 여기랑 매칭이되죠
그래서 sum값이 choice에 들어가게 됩니다.
그리고 뒤에는 *val입니다. 이후에 들어오는 값들을 *val이 다 받아주죠
그래서 choice가 sum이면 더하기, mul이면 곱샘을 합니다
결과는 15가 나오게 되죠~
그리고 처음부터 인자의 초기값을 설정할 수도 있습니다.
무슨말이냐 하면 아래처럼 가능합니다
1
2
3
4
5
6
7
8
9
10
|
def say_myself(name, age, man=True): #함수 인수에 초기값을 미리 넣을 수 있다.
print("이름은 : %s" %name)
print("나이는 : %d" %age)
if man:
print("남자")
else:
print("여자")
say_myself("수진", 55)
say_myself("수진", 25, False)
|
cs |
맨 처음부터 man은 True값을 가지고 있죠
외부에서 호출할 때 변경해주지 않는 이상 초기값은 True입니다.
이렇게 되죠~
여기까지 파이썬 함수 간단하게 살펴보았습니다
'python' 카테고리의 다른 글
벅스 차트 분석(파이썬 크롤링과 R을 이용한 분석) (0) | 2017.11.16 |
---|---|
파이썬 크롤링으로 지진 후 현재 네이버 실검 상태 확인! (0) | 2017.11.15 |
파이썬(python) 파일 입출력(file IO)를 알아보자 (0) | 2017.11.10 |
파이썬(python) 사용자 입력 input 함수 (0) | 2017.11.06 |
파이썬(python) 해시(딕셔너리) 다루기(추가, 수정, 삭제, keys(), values()) (0) | 2017.11.06 |