[파이썬] 함수

Dragony·2020년 4월 1일
0

파이썬

목록 보기
13/14

파이썬 함수의 구조

def 함수명(입력 인자):
수행할 문장1
수행할 문장2
.
.
.
return 결과 값

입력 값이 없고 결과 값만 있는 함수는 다음과 같이 사용한다.


>>> def say():
...     return "hi"
...
>>> say()
'hi'
>>> a=say()
>>> a
'hi'

결과 값이 없어도 된다.


>>> def sum(a,b):
...     print("%d,%d의 합은 %d 입니다." %(a,b,a+b))
...
>>> sum(3,4)
3,4의 합은 7 입니다.

입력값이 몇 개가 될지 모를 때는?

def 함수명(*입력 변수):
수행할 문장
...

여러개의 입력 값을 받는 함수 만들기

다음의 예를 통해 여러개의 입력값을 모두 더하는 함수를 직접 만들어 보자.
예를 들어, sum(1,2) 면 3을, sum(1,2,3)이면 6을, sum(1,2,3,4,5,6,7,8,9,10) 이면 55를 리턴하는 함수를 만들어보자.


>>> def sum(*args):
...     sum=0
...     for i in args:
...             sum=sum+i
...     return sum
...
>>> sum(1,2)
3
>>> sum(1,2,3)
6

args 처럼 입력 변수 명 앞에 ''를 붙이면 입력값들을 전부 모아서 튜플로 만들어 주기 때문에 입력값이 몇개이든 상관 없다.


>>> def cal(choice, *args):
...     if choice=="sum":
...             result=0
...             for i in args:
...                     result=result+i
...     elif choice=="mul":
...             result=1
...             for i in args:
...                     result=result*i
...     return result
...
>>> cal('sum',1,2,3,4,5)
15
>>> cal("mul",1,2,3)
6

함수의 결과값은 언제나 하나이다.


>>> def sum_and_mul(a,b):
...     return a+b,a*b
...
>>> result=sum_and_mul(3,4)
>>> result
(7, 12)
>>> sum_and_mul(3,4)
(7, 12)

결과 값이 위와 같다면 튜플 값 하나인 (a+b,a*b) 로 돌려준다.

만약 이 하나의 튜플 값을 2개의 결과값처럼 받고 싶다면 다음과 같이 함수를 호출하면 된다.


>>> sum,mul=sum_and_mul(3,4)
>>> sum
7
>>> mul
12

입력 인수에 초깃값 미리 설정하기


>>> def say_myself(name,old, man=True):
...     print("나의 이름은 %s입니다." %name)
...     print("나이는 %d 살 입니다." %old)
...     if man:
...             print("남자입니다.")
...     else:
...             print("여자입니다.")
...
>>> say_myself("파이썬",27)
나의 이름은 파이썬입니다.
나이는 27 살 입니다.
남자입니다.
>>> say_myself("파이썬",26,False)
나의 이름은 파이썬입니다.
나이는 26 살 입니다.
여자입니다.
>>> say_myself("파이썬",26,0)
나의 이름은 파이썬입니다.
나이는 26 살 입니다.
여자입니다.

초기화시키고 싶은 입력 변수들은 항상 뒤쪽에 위치시키는 것도 잊지 말자.

함수 안에서 선언된 변수의 효력 범위

함수 안에서 사용할 변수의 이름을 함수 밖에서도 사용한다면 어떻게 될까?
함수 안에서 사용된 변수는 그 함수가 끝나면 효력을 잃는다.

그리고 파이썬에서도 전역변수가 존재하는데, global이라는 키워드를 사용하면 된다.
global a 라는 문장은 함수 안에서 함수 밖의 a 변수를 직접 사용하겠다는 뜻이다.



>>> a=1
>>> def vartest():
...     global a
...     a=a+1
...
>>> vartest()
>>> print(a)
2
profile
안녕하세요 :) 제 개인 공부 정리 블로그입니다. 틀린 내용 수정, 피드백 환영합니다.

0개의 댓글