def 함수명(인수)
def : 함수를 만들 때 사용하는 예약어
함수 예시
def sum(a,b) :
return a+b
a=3
b=4
c=sum(a,b)
print(c)
위에 기술한 함수가 일반적인 함수이다
def say():
return "hi"
a=say()
print(a)
def sum(a,b) :
print("%s, %s의 합은 %s입니다" %(a,b,(a+b)))
x=7
y=6
z=sum(x,y)
여기서 print로 인해 결과값이 왜 없지라고 생각한 사람이 있을 것이다
나부터 그랬기 때문이다.
근데 print는 함수 구성요소 중 하나인 "수행할 문장"에 해당하는 부분이고,
결과값은 오로지 return 을 통해서만 돌려받을 수 있다
def 함수명(*입력변수) :
def sum_many(*args) :
sum=0
for i in args :
sum+=i
return sum
c=sum_many(5,1,4)
print(c)
*args를 붙이면 입력값을 전부 튜플로 만들어준다
다만 함수 return의 자료형이 int기 때문에 리스트 같은 거 쓰면 오류난다
def sum_mul(choice, args) :
if choice=='sum' :
result=0
for i in args :
result+=i
elif choice=='mul' :
result=1
for i in args :
result=i
return result
a=sum_mul("sum",1,3,4,13,4,5,1,5)
print(a)
이렇게 인수가 2개이상인것도 만들 수 있다
return안에 a+b, ab 를 쓰면 어케 될까?
아나 이거 쓰면 자동으로 기울임되넼ㅋㅋㅋㅋㅋ
def sum_mul(a,b):
return a+b,a*b
c=sum_mul(3,4)
print(c)
이렇게 return에 두 개의 값을 썼는데 7,12가 출력됐다
아 결국 하나의 값이라는 게 return ?가 아닌 return안에 덩어리로도 한 개가 들어갈 수 있다는 거구나
def sum_mul(a,b):
return a+b
return a*b
c=sum_mul(3,4)
print(c)
이렇게하면 7만 나온다
아 return이 한 번 나오면 여기서 끝나는 구나라는 걸 알 수 있다
return을 통해 특별한 상황을 빠져나가게 할 수 있다
def mooyaho(str) :
if str=='무야호' :
return
print("그만큼 신나시다는거지")
c = mooyaho('무야호')
d= mooyaho('무호야')
print(c)
print(d)
이렇게되면 c는 무야호가 출력되는데, d는 print가 출력되지 않고 none이 된다
def say_myself(job, old, man=True) :
print("나의 직업은 %s입니다" %job)
print("내 나이는 %d살입니다" %old)
if man :
print('남자')
else :
print('여자')
print(say_myself('컨설턴트',28))
print(say_myself('컨설턴트',28,'man'))
man=True라고 초기값을 설정해서 출력할 때 있어도 그만, 없어도 그만이다
인수 순서에 맞게 값 대입하는 거 중요하니 명심하자잇
a=1
def vartest(a): a=a+1
vartest(a)
print(a)
나도 착각했던 게 왜 2가 아니지?였다
그런데 함수에서 a+=1 시킨 다음 return을 해준 게 없으니 1이 되는거였다
global이라고 해서 사용한다는데 그거 쓰지마! global 사용 멈춰!