4장 함수

Kiyong Lee·2021년 4월 12일
0

파이썬

목록 보기
8/21
post-custom-banner

함수구조

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의 또다른 쓰임새

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 사용 멈춰!

profile
ISTJ인 K-개발자
post-custom-banner

0개의 댓글