파이썬/파이썬 입문 공부일지

파이썬 공부일지 17. 함수 만들기!

Tomitom 2022. 10. 14. 11:30
반응형

 

 

함수를 사용하는 것은 함수를 호출한다, 고 하고

함수를 호출할 때 괄호 내부에 넣는 여러가지 재료를 매개변수 또는 인수 또는 인자 라고 합니다. 

(인수라는 표현을 더 많이 씁니다.) 

함수를 호출해서 최종적으로 나오는 값을 리턴값 이라고 합니다.  즉 표현식으로부터 내보내진 결과값입니다.

 

print("금요일") 

 

에서 print(  ) <-이렇게 print 뒤에 괄호를 여는 것을 함수를 호출하는 것이고

그럼 '금요일' 이라고 적은 값은 매개변수가 되고,

'금요일' 이라는 결과 값은 리턴값이 됩니다.

  

 

함수를 생성하는 기본 형태는 이렇습니다. 

 

def 함수명 () :              (def 는 define 이며 정의한다는 뜻입니다.    : <- 콜론은 함수 선언입니다.) 

      문장

 

어떤 함수를 보관하고 싶은지 함수를 만들고 호출하면 됩니다.

오늘 저는 수업 끝나고 동해바다를 갈 거예요. 그럼 동해바다를 간다고 출력하는 함수를 만들어볼게요. 

함수를 저렇게 긴 문장으로 쓰지 않지만 오늘 기분이 좋으니까 길게 쓸게요. 

함수는 주로 기능을 나타내기 때문에 동사로 저장합니다. 

 

함수와 변수의 차이는

변수는 자료를 저장하고, 함수는 기능을 저장한다는 것이에요. 

 

def going_up_the_coast() :       #함수는 주로 동사로 많이 씁니다 
    print("오늘은 동해바다 가는 날")

 

이렇게 def  로 함수를 만들었습니다. 

 

매개변수는 함수가 재료를 받을 수 있게 해주는 변수(식별자) 입니다. 

매개변수는 def 로 만든 함수의 괄호 안에 입력하면 됩니다. 

 

괄호 안에 name 이라는 식별자를 입력하게 되면 

함수에 인수를 입력했을 때 결과 값이 리턴됩니다. 

 

즉 식별자가 전달하는 값들을 인수라고 합니다. 

 

 

 

함수 안에 식별자를 넣고, 그것을 코드 문장 안에 삽입했어요. 

이제 괄호 안에 매개변수를 입력하면 결과값에 반영이 됩니다. 

갯수 제한은 없습니다. 

 

 

 

이렇게 두 개를 적을 수도 있어요.

 

 

매개변수는 이런 시으로 괄호 내부에 함수 호출값을 지정할 수 있습니다. 

기본적으로 이렇게도 사용합니다. 

 

 

 

 

출력할 문장을 입력하고, 출력을 몇 번 할지 횟수를 입력하면 그 횟수만큼 반복해서 출력하는 거예요.

 

함수를 생성할 때 매개변수를 만들었는데,

함수를 호출할 때 매개변수를 넣지 않거나 더 많이 입력하게 되면 Error 가 발생하니까 주의해야해요.

 

그럼 함수를 선언할 때 매개변수의 수와 함수를 호출할 때의 매개변수의 수가 같지 않으면 오류가 나는데 

print() 같은 함수는 매개변수를 원하는 만큼 입력할 수 있었죠. 

이것처럼 매개변수를 원하는만큼 받을 수 있는 함수를 가변 매개변수라고 합니다. 

 

 

 


가변 매개변수 

매개변수 개수가 변할 수 있다는 의미입니다.  (1개가 들어가도 되고 10개가 들어가도 되는 매개변수) 

 

가변 매개변수는 이렇게 만들어요. 

 

def 함수이름(매개변수, 매개변수, 매개변수, ..., *가변 매개변수) 

     문장

 

 - 가변 매개변수 뒤에는 일반 매개변수가 올 수 없습니다. (가변 매개변수는 여러개를 받을 수 있으니까 어디까지가 매개변수인지 판단할 수 없으므로) 

- 가변 매개변수는 하나만 사용할 수 있습니다.

 

이렇게 값을 여러개 받을 수 있습니다. 

 

 

또 다른 하나는 기본 매개변수입니다. 

이것은 '매개변수 = 값' 으로 표현되어 있습니다. 

ex) def what(b="무엇이") 

          print(b)

 

이 상대로 아무것도 입력하지 않고 what() 만 입력했을 때 '무엇이' 이 출력됩니다.  

 

 

 

 

기본 매개변수는 디폴트 파라미터 라고 합니다. 

 

기본 매개변수는 값을 전달하지 않아도 된다는 뜻이며, 디폴트로 해당 값이 고정되어 있는 것이에요.

값을 전달하면 그때 값이 바뀐다는 의미입니다. 

그렇기 때문에 기본 매개변수 뒤에는 일반 매개변수를 사용할 수 없습니다. 

(기본 매개변수가 앞에 있으면 어떤 것이 일반 매개변수인지 값을 판단할 수 없기 때문에 

일반 매개변수가 앞에 오고 기본 매개변수가 뒤로 갑니다.)  

 

이렇게 오류가 뜹니다.

 

 

 

 

기본 매개변수와 가변 매개변수는 동시에 썼을 때 의미가 없습니다. 

기본 매개변수가 가변 매개변수 앞에 오면 

 

그래서 두 가지를 함께 사용할 수 있는 방법으로 키워드 매개변수가 있습니다. 

키워드 매개변수는  매개변수 지정하여 호출하는 것이에요. 

 

가령 print() 함수에는 키워드 매개변수가 여러가지가 있습니다. 

VS(비주얼스튜디오) 코드를 열어서 print() 를 입력했을 때 여러가지 값이 뜨는데 

*vales 는 조금 전에 보았던 가변 매개변수고, 그 뒤에는 모두 기본 매개변수 입니다. 디폴트 파라미터라고 하죠. 

 

 

print () 함수에 end 키워드가 있습니다. 이것은 \n 을 줄바꿈을 의미한다고 되어 있죠. 

print() 함수가 끝나면 줄바꿈이 되는 이유 입니다. 

그럼 end의 키워드를 다른 값으로 바꾸면 print() 함수가 종료되고 줄바꿈 대신 다른 역할을 할 거예요. 

 

 

 

이렇게요. 기본 매개변수를 직접 지정해서 값을 입력하는 것을 키워드 매개변수라고 합니다. 

 

 그럼 키워드 매개변수를 어떻게 쓰는지 볼게요. 

 


def print_n_time(*value,n=3):   -> 가변 매개변수와 기본 매개변수를 동시에 씁니다. 
    for i in range(n):
        print(value)
        print() 

print(print_n_time("바다갈 것이다.", "오늘은 반드시.", n=3))  -> 그리고 기본 매개변수의 값을 n=3 으로 입력했을 때 

 

 

이것은 키워드 매개변수로 실행이 가능한 거예요. 

결과값은

이렇게 나옵니다. 

 

다음으로 리턴에 대해서 알아볼게요. 

함수를 실행하고 나면 함수의 결과를 받아서 사용했습니다. 그값을 우리는 리턴값 이라고 하는데요 

리턴은 함수를 실행했던 위치로 돌아가라는 뜻으로 함수가 끝나는 위치를 의미합니다. 

 

 

return 키워드를 만나는 순간 함수가 종료되어 결과적으로 그 아래에는 도달하지 못하고 종료합니다. 

 

 

return 뒤에 자료를 입력하면 자료를 가지고 처음으로 돌악바니다. 

return 100 을 입력하면 함수를 종료하고 100 를 데리고 돌아갑니다. 

 

그럼 이것들을 활용해서 패턴을 볼게요. 

 


def sum_all(start,end) :
    output= 0
    for i in range(start,end+1) :
        output += i
       
    return output


print(sum_all(1,10))

함수는 이런 식으로 자주 활용합니다. 
초깃값은 연산을 해도 값에 아무런 변화를 주지 않는 것으로 사용합니다.
덧셈식에서는 0 이 되고, 곱셈식에서는 1 이 됩니다. 
값이 55가 출력되면 알맞게 입력된 거예요.
예제를 한번만 더 활용해보고 여기까지 정리할게요!
 
 
 
def sum_all(start=0, end=100, step=10):
    output = 0
    for i in range(start, end+1, step):
        output += i
    return output


print("A", sum_all(0,100,10))
print("B", sum_all(end=100))
print("C", sum_all(end=100, step=2))
 
 
이렇게 사용하면 0에서 100까지 10을 단위로 더하는 코드가 완성 됩니다. 
여기까지! 조금 더 연습해볼게요. ^^ 
반응형