Python/Python 시작하기

16. 파이썬 함수 - 함수 (function) 심화

arvigoes 2019. 12. 22. 23:10

이전 포스팅 함수의 기초

https://arvigoes.tistory.com/47

 

15. 파이썬 함수 - 함수 (function) 기초

함수란? 함수는 특별한 목적의 작업을 수행하기 위해 독립적인 영역에서 목적을 위해 작성된 코드의 집합입니다. 특수한 목적이 있을때마다 만들어진 함수를 사용함 으로써 매번 재작성 할 필요가 없어지므로 코드..

arvigoes.tistory.com

보시고 오시면 좋을 것 같아요

15번 포스팅에 이어하는 내용이라 잘 아시는 내용이 아니라면 읽어 보시는걸 추천 드립니다.

지난번 포스팅에선 함수의 기본형 선언과 사용(호출) 하는 법에 대해 알아 봤습니다.

 

함수의 다양한 형태                                           

이번에는 좀 더 다양한 형태의 함수에 대해 알아 보도록 하겠습니다.

그렇다고 해서 기본과 크게 달라지는건 아닙니다.

def 함수이름(매개변수)
    본문
    ...
    return 결과값

def ADD(a,b):
    result = a+b
    return result

ret = ADD(1, 2)
print(ret)

위의 형태가 함수의 가장 기본적인 형태입니다.

지난번과 다라진 것은 return 구문이 추가 되었습니다.

입력이 있고 수행을 하고 그 결과를 return 으로 전달. 

프로그래밍에서 가장 많이 사용하는 함수의 기본 형태라고 할 수 있습니다.

 

return 이 없다면 결과가 없는 함수,

매개 변수가 없다면 입력이 없는 함수가 됩니다.

입력도 결과도 없는 형태 로도 선언&사용이 가능 합니다.

# Code 2
# 기본형

# 입력 & 결과
def ADD(a,b):
    result = a+b
    return result

# 입력만
def PrintADD(a,b):
    print(a+b)

# 결과만
def ADD_1_2():
    result = 1+2
    return result;

# 입력도 결과도 없음
def PrintADD_1_2():
    print(1+2)

###########
# 사용법 ##

ret = ADD(1, 2)
print(ret)

PrintADD(1, 2)

ret = ADD_1_2()
print(ret)

print(PrintADD_1_2())

이전 포스팅에서 선언된 ADD 는 입력은 있지만 결과가 없는 함수 입니다.

선언 할때마다 용도에 맞게 선언해서 사용 하면 됩니다.

 

16-1. 결과는 동일

 

매개변수(parameter) 인수(arguments)

매개변수(parameter = 줄여서 param) 와 인수(argument = 줄여서 arg)는 많이 햇갈리는 용어입니다.

실제로도 계속 사용하면서도 햇갈려서 다르게 말하는 경우도 많은데요, 보통은 대충 말하고 대충 이해 합니다.

그래도 가능하면 잘 기억해 두셔서 틀리지 않으시면 좋아요

이런 부분에서 숙련의 냄새가 난다는거.

매개변수는 함수에 입력으로 전달된 값을 받는 변수를 의미 하고,

인수는 함수를 호출 할때 전달하는 입력값을 의미 합니다.

말이 어렵죠? 코드로 보시면 이해가 빠르 실 수 있습니다.

# Code 3
# param & arg

def ADD(a,b):       # a, b 는 매개변수
    print(a+b)

ADD(2, 3)           # 2, 3 은 인수

 

매개변수                                                          

매개변수의 지정 호출

# Code 4
def MakeCard(target, Sender) :
    print("%s가 %s개에게 보내는 카드" % (Sender, target))

MakeCard("수지", "낭히")        # 일반 함수 호출
MakeCard(Sender="수지", target="낭히")        # 지정 param 호출

 

16-2. 매게 변수 지정

 

저도 잘 써본 적은 없지만 이렇게 사용 하는 방식이 있다는 정도로 이해 하시면 될거 같아요

잘 쓰이진 않는듯 하지만 함수가 자주 변경되거나 순서가 헷갈리거나 할때 유용하게 사용 할 수 있을 것 같습니다.

 

가변개수 parmemeter

# Code 5

def 함수이름(*매개변수): 
    본문
    ...
    
    
def ADD_ALL(*numbers) :
    result = 0
    for num in numbers :
        result += num
    return result    
    
ret = ADD_ALL(1,2,3,4,5,6,7,8,9,10)

print(ret)
        

 

16-3. 매개변수

 

자주 사용하는 형태는 아니지만 알고는 계셔야 하는 가변인자 함수 입니다.

가변인자 함수라고 해서 모두 가변으로 되어야 하는건 아닙니다.

마지막 param 만 가변으로 만들 수 있습니다.

def 함수이름(param1, param2, *params ) :
	본문
    

예시
def MakeFamily(본인, 배우자, *자녀 ) :
	본문
    
호출
MakeFamily(철수, 영희, 나희, 수지, 영수)

이런 형태로 처음 두개 인자는 고정으로 특수 목적으로 사용하고 마지막인자만 가면으로 사용 한다면 여러 잼있는 형태가 나올 수 있습니다.  위 함수에서 본인과 배우자는 호출시 꼭 포함 되어야 하지만 자녀는 0~100명일지도 모르니 가변으로 지정 하는 형태 입니다.

 

이름 없는 함수 (lambda)                                    

lambda는 파이썬 예약어 입니다.
함수의 선언을 나타내는 예약어 def 와 동일한 역활을 합니다. 이름 붙이기에 너무 간단한 함수 등에 주로 사용합니다.

lambda 매개변수1,... : 실행구문.반환값
# Code 6 
# lambda
# 반올림 연산

roundingoff = lambda x: (x + 0.5) // 1

print(roundingoff(1.7))


반올림 하는 함다 함수 입니다.

직접 함수로도 한번 구현해 보시길 바랍니다.