안녕하세요
서울 꺼벙 천사입니다

[ 혼자 공부하는 파이썬 개정판 ]을 정리하고 있습니다

이번에는
서울 꺼벙 천사가
선정된
[ 혼공학습단 8기 ] 네번째 미션을 하도록 하겠습니다
[ 혼공학습단 8기 ]는 총 6번으로 구성되어 있습니다

이번 미션은

입니다

선택 미션
함수
함수는
[ function ]으로
[ 기능 ]이라는 용어로 번역이 되는 것으로
어떤 것을 입력했을 때
처리된 결과를 얻기 위해 사용하는 것이 함수입니다
지금까지 파이썬을 독학하면서
사용한
print
input 등도 함수로 볼 수 있습니다
어떤 것을 나타내는 이름 옆에
()가 있고
() 다음에 :이 있는 형식이라면 함수입니다
input()
print()와 같이 파이썬을 설치할 때부터 만들어져 있는 것을
[ 내장 함수 ]라고 합니다

내장 함수를 잘 사용해도 좋은 프로그래밍을 할 수 있지만
내가 원하는 동작을 하게 하기 위해서는
직접 함수를 만들어서 사용해야 합니다
이것이 바로 [ 사용자 정의 함수 ]입니다

함수를 쉽게 생각하려면
자동 판매기를 생각하면 됩니다
동전이나
지폐를 자동 판매기에 넣고
자동 판매기의 상품 중에 원하는 것을 클릭하면
원하는 제품이 나옵니다
이때 자동 판매기의 역할이 바로 함수입니다
함수는 입력을 받아
처리를 하고
결과를 내어 놓은 역할을 하는 것입니다
프로그래밍 분야의 내용으로 정리를 하면
하나의 특별한 목적의 작업을 수행하기 위해
독립적으로 설계된 코드의 집합을
함수라고 합니다

함수를 사용하는 이유
첫째 함수를 사용하면
반복적으로 작성해야 하는 코드를 줄일 수 있습니다
둘째 전체적으로 코드를 쉽게 파악할 수 있습니다
셋째 언제든지 함수의 내용을 변경하면
새로운 기능을 가진 함수를 만들어 낼 수 있습니다

함수 선언
이제 본격적으로 사용자 정의 함수를 만드는 것에 대해
알아보도록 하겠습니다
사용자 정의 함수는 내가 원하는 기능이 동작하도록 만드는
것을 말하며
이것을 [ 함수 정의] , [ 함수 선언 ]이라는 용어를 사용합니다

간단하게 서울 꺼벙 천사를 소개하는 것을
프로그래밍을 하면 다음과 같이 할 수 있습니다

print('안녕하세요!!!')
print('서울 어느 한 구석에 살고 있는')
print('서울 꺼벙 천사라고 합니다!!!')
print()

저장을 하고
실행을 하면
다음과 같은 결과가 나옵니다

위와 같은 문장을 5번 반복해야 할 필요가 있으면
어떻게 하면 좋을까요?
여러 가지 방법이 있겠지만
다음과 같이 함수를 이용하는 방법이 있습니다

def 인사():
    print('안녕하세요!!!')
    print('서울 어느 한 구석에 살고 있는')
    print('서울 꺼벙 천사라고 합니다!!!')
    print()

파이썬에서 함수를 선언할 때는
[ define ]의 약자인
[ def ]를 사용을 사용하여
함수를 만드는 것을 [함수 선언 ]이라고 합니다

함수를 사용하고 싶을 때마다
함수의 이름을 적어주면
함수가 사용이 되는데
이렇게 함수의 이름을 적어
함수를 실행하는 것을
[ 함수 호출 ]이라는 용어를 사용합니다
5번 반복하고 싶으면

인사()
인사()
인사()
인사()
인사()

위와 같이 입력을 하고
저장을 하고
실행을 하면
다음과 같은 결과가 나옵니다!

위에서는 연속으로 5번을 호출을 했지만
원할 때마다 함수를 호출해서 사용할 수도 있습니다

인사()
print()
인사()
print()
print()
인사()
print()
print()
print()
인사()
print()
print()
print()
print()
인사()

위와 같이 사용을 해도 된다는 의미입니다
저장을 하고
실행을 하면
다음과 같은 결과가 나옵니다

함수를 사용하고 싶을 때마다
함수 이름을 적어주는
함수 호출을 통해서 사용할 수 있다는 것입니다

함수를 사용하는 것을 나타내는 용어는
[ 함수를 호출한다 ]라는 용어를 사용하는데
함수를 호출하기 전에 반드시 함수가 선언이 되어 있어야 합니다

매개변수
이제 조금 복잡한 개념들이 등장하기 시작합니다
그 첫 번째가 바로 매개 변수입니다
[ 매개 ]라는 것은
[ 둘 사이에 관계를 맺어준다 ]는
사전적인 정의를 가지고 있고
변수는 어떤 데이터를 저장하기 위한 공간이라는 것을
알고 있습니다
이 2가지를 혼합하면 매개 변수의 개념이 나옵니다
매개 변수는 [ 함수의 외부와 내부를 연결시키는 변수 ]라고
정의할 수 있을 것입니다
즉 함수 안에서 사용하는 변수를 만드는 것을 매개 변수라고 합니다
매개 변수는 [ parameter ]라는 용어를 사용하기도 합니다

인자
함수 내부에서 사용할 변수인 매개 변수를 만들었다면
매개 변수에 데이터를 넣는 것이 필요할 수 있습니다
매게 변수에 데이터를 넣는 것이 바로 인자입니다
인자는 함수를 호출할 때 사용합니다
인자는 [ argument ]라는 용어를 사용합니다

def 인사():
    print('안녕하세요!!!')
    print('서울 어느 한 구석에 살고 있는')
    print('서울 꺼벙 천사라고 합니다!!!')
    print()

위의 함수를 매개 변수와
인자를 이용해보도록 하겠습니다

def 인사(name):
    print('안녕하세요!!!')
    print('서울 어느 한 구석에 살고 있는')
    print(name,'라고 합니다!!!')
    print()
    print('저는 ', name , '입니다')
    print()

위에서 사용한 name이라는 것이 매개 변수입니다

함수를 호출할 때 함수 이름 옆에 ()
안에 적는 것이 인자입니다
매개 변수에 저장이 되는 데이터입니다

인사('서울꺼벙천시')
인사('서울꺼벙악마')

위와 같이 함수를 호출하면 어떤 결과가 나올까요?

위에서 사용한
[ 서울꺼벙천사 ]와
[ 서울꺼벙악마 ]가 함수 내부에서 데이터를 사용하기 위해
매개 변수에 값이 저장되는 인자입니다

위에서는 간단하게
매개변수 1개와
인자 1개를 사용하였지만
여러 개의 매개 변수와
인자를 사용할 수 있지만
함수 선언 부분에서 선언한 매개 변수와
함수를 호출할 때 사용하는 인자의 개수가 맞지 않으면
오류가 발생을 합니다

def 인사(name, job):
    print('안녕하세요!!!')
    print('서울 어느 한 구석에 살고 있는')
    print(name,'라고 합니다!!!')
    print()
    print('저는 ', name , '입니다')
    print('저는 ', job, '입니다'
    print()

매개 변수 하나를 더 추가했습니다
함수를 호출하도록 하겠습니다

인사(서울꺼벙천사)

저장을 하고 실행을 하면
어떤 결과가 나올까요?

위와 같은 에러가 발생을 합니다
위의 에러는
함수를 선언할 때
name과
job이라는 2개의 매개 변수를 선언했는데
호출할 때 하나의 인자는 적어서 에러가 발생을 한 것입니다
정상적인 동작을 하게 하려면

인사('서울꺼벙천사','백수')

저장을 하고
실행을 하면
정상적인 결과가 출력이 됩니다

기본 매개 변수
위에서 사용한 인사라는 함수를
다음과 같이 선언을 해보도록 하겠습니다

def 인사(name='서울꺼벙천사', job='백수'):
    print('안녕하세요!!!')
    print('서울 어느 한 구석에 살고 있는')
    print(name,'라고 합니다!!!')
    print()
    print('저는 ', name , '입니다')
    print('저는 ', job, '입니다')
    print()

인사라는 함수를 호출해보도록 하겠습니다

인사()

어떤 결과가 나올까요?
에러가 발생을 할까요?
정상적으로 작동을 할까요?

함수를 호출할 때 인자를 넣지 않았는데
정상적으로 작동이 되는 것을 볼 수 있습니다
이것은 함수를 선언할 때
아무 인자도 입력되지 않았을 때
기본적인 매개 변수가 출력되도록 선언을 했기 때문입니다
이때 사용한 매개 변수를 기본 매개 변수라고 합니다

def 인사(name='서울꺼벙천사', job='백수'):

함수를 호출할 때
다른 값을 넣어도 정상적으로 작동이 됩니다

인사()
인사('서울꺼벙악마','국회의원')
인사('혼공족장','일류프로그래머')

저장을 하고
실행을 하면

가변 매개 변수
위의 2가지의 경우에는 매개 변수가 몇 개가 필요한지
알고 있는 경우에 사용을 하는 것입니다
그러나 매개 변수의 갯수를 미리 지정하지 않고
함수를 선언하는 방법이 있는데
이때는 매개 변수 이름 앞에 *를 붙여
사용을 합니다

def 인사(*ufo):
    print('안녕하세요!!!')
    print('서울 어느 한 구석에 살고 있는')
    print(*ufo,'라고 합니다!!!')
    print()
    print('저는 ', *ufo , '입니다')
    print('저는 ', *ufo, '입니다')
    print()

ufo는 미확인 비행 물체를 가리키는 용어라서
서울 꺼벙 천사는
ufo라는 매개 변수 앞에
*를 붙여서
가변 매개 변수로 만들었습니다
함수를 호출할 때 다음과 같이 사용할 수 있습니다

인사('서울꺼벙악마','국회의원')
인사('혼공족장','일류프로그래머')
인사('윤석열','대한민국의 대통령', '화이팅!!!')
인사('노무현','대한민국의 전직 대통령','보고싶습니다!!!','사랑합니다')

저장을 하고
실행을 하면

필수 미션
범위의 수를 모두 곱하는 함수입니다

![](https://velog.velcdn.com/images/nspro0318/post/cee7b794-451a-49ba-beb3-712ea1f890b3/image.png)

결과입니다

첫 작성 : 2022년 8월 12일 금요일

profile
프로그래밍을 독학하는 서울 꺼벙 천사입니다

0개의 댓글