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