Forensic/혼공파 챌린지

혼공파 4주차 미션

Ron Weasley 2021. 7. 31. 16:48

안녕하세요 이제 반을 지나서 4주차로 들어섰는데 일이 너무 많다보니 늦게 작성하게 되버렸네요 ㅎㅎ...

바로 시작해보겠습니다 이번에 배우게 될 부분은 바로 이 부분입니다.

4주차 미션

책으로 챕터5 부분을 공부하고 p223에 있는 문제를 풀고 인증샷을하고 매개변수, 기본 매개변수, 가변 매개변수에 대해 정리하라 입니다. 바로 가볼게용!

 

함수(function)

  함수는 쉽게 설명하자면 작은 프로그램입니다. 우리가 사용해왔던 len()함수, sizeof()함수, print(), input()전부다 함수의 일종입니다. 그럼 정의 되어있는 함수를 쓰면되지 왜 배우냐구요?? 정의되어 있는 함수는 개발자가 되려면 필요한 함수이지만 우리가 직접 그 함수들을 사용하고 하나의 작은 프로그램을 만드는것이 코드를 봤을 때도 한 눈에 들어올뿐만 아니라 지금은 배우지 않았지만 나중에 자료구조를 배우게 되면 시간복잡도를 생각하면서 코드를 작성할텐데 시간복잡도는 나중에 설명을 해드리겠습니다. 

 

  이처럼 함수는 우리가 직접 만들수가 있습니다. 간단한 예제를 보여드리겠습니다.

sum함수

이 코드는 sum()함수를 직접 만든것입니다. 코드를 한번 풀어서 설명 해드리겠습니다.

 

① def 키워드를 통해서 sum이라는 함수 이름을 만들고 매개변수로 a, b를 받습니다.

② n이라는 변수에 매개변수로 받은 a, b를 더한 값을 넣습니다.

③ n을 반환합니다. (반환하는 이유는 해당 기능을 수행하고 완료된 값을 전달하기 위해서 입니다.)

④ sum()함수를 출력합니다. 인수는 10, 20입니다.

sum함수 출력값

이제 설명을 들었으니 모르는 단어들을 한번 배워보겠습니다.

 

def 키워드

  함수 이름으로부터 기능을 명시하는것, 즉 함수를 만들 때 사용하는 예약어입니다. 함수 이름은 함수를 만드는 사람이 임의로 만들 수 있다. 예) def sum, def mul ... 등등

 

매개변수(parameter)

  매개변수는 인수와 혼용해서 사용되는 헷갈리는 용어입니다. 매개변수는 함수에 입력값으로 전달하는 값입니다. 다른 말로 하면 함수에 입력으로 전달된 값을 받는 변수를 말하는것 입니다.

 

인수(arguments)

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

 

return 키워드

  아마 return 키워드는 c언어나 c++을 배우셨다면 다들 아실텐데요. 쉽게 말해서 함수를 실행했을 때, 함수 실행을 종료하고 함수에서 나온 주어진 값을 함수 호출 지점으로 반환하는것 입니다. 

 

  그럼 위에서 설명한 해설이 조금은 이해가 가시나요?? 하지만 이해가 안가는 부분이 있을겁니다. 바로 소스 코드의 실행순서인데요. 왜 sum함수가 먼저 출력되지 않았는지. 컴퓨터는 어디를 시작점으로 가지는지!! 하지만 제가 설명하는 것을 보면 어렵지 않게 이해할 수 있습니다. 바로 설명해드릴게요. 여기서는 c언어도 함께 다뤄볼게요 ㅎㅎ...

 

<main함수의 이해>

  프로그램은 함수들이 여러개 모여있는 집합체라고도 할 수 있습니다. 그중에 제일 중요한 메인이되는 main()함수가 있을수도 있구 우리가 아까 정의했던거 처럼 두 인수값를 인자(매개변수)로 입력받아서 두 인자를 더하는 함수 sum()이 있을수도있고, 빼기 연산을 해주는 sub()함수가 있을수도 있습니다. 앞에 이러한 프로그램을 계산기 프로그램이라고 가정 합시다. 계산기 프로그램은 함수들이 여러개가 모여서 만들어진것입니다. 결국엔 프로그램은 사람이 컴퓨터에게 일을 시키는것입니다. 이때 프로그램을 개발한 사람은 사용자에 의도에 따라 일을 하게끔 개발을 했습니다. 계산기 프로그램을 개발한 사람은 사용자가 편리한 UI를 제공하기 위해 이러한 화면이 먼저 출력이되게 소스코드를 작성했을것입니다.

다음걸 설명하기 전에 알아야 할 것이 있습니다.

 

파이썬은 코드를 실행시킬 때 두 가지 방식으로 실행을 시킵니다.

1. 들여쓰기를 통해 코드 실행의 레벨을 결정합니다.

2. main()함수가 존재하지 않습니다.

 

그리고 저 화면을 출력하는 코드를 보겠습니다. c언어로 작성한것과 파이썬으로 작성한 코드입니다. 서로 내용은 다르지만 sum함수와 출력함수는 똑같습니다. 그냥 main()함수가 있냐 없냐 차이만 보시면 되겠습니다.

C언어
Python

  두 이미지를 보겠습니다. 코드를 보면 C언어는 main()함수가 존재하지만 파이썬은 main()함수가 존재하지 않습니다. 근데 하나는 확실히 알 수 있습니다. 두 소스코드는 사용한 언어는 다르지만 출력결과는 똑같다는걸요!! 하지만 우리는 출력결과를 보고 싶은게 아니고 프로그램의 실행 순서에 대해서 알고 싶습니다. 바로 설명을 하겠습니다. C언어에서는 프로그램을 실행하면 컴퓨터에서 무조건 main()함수를 먼저 찾아다닙니다. 왜냐하면 main()함수가 프로그램의 시작점이기 때문입니다.

 

C언어 코드를 먼저 설명해보겠습니다.① 앞에 어떤 코드가 있든 main()함수를 먼저 찾아갑니다.② 안녕! 을 출력합니다.③ 그다음 sum함수를 불러와서 sum함수의 매개변수에 10,20을 인수 값으로 주고 실행시킵니다.

 

<실행결과>

이로써 C언어는 프로그램이 실행을 할 때 위에서 아래로 ↓ 방향으로 프로그램이 실행이 되지만, main()함수를 먼저 찾아간다는것만 이해하시면 됩니다.

 

파이썬 코드를 설명하자면 위에서 설명한 들여쓰기에 따라 실행순서가 변합니다. 들여쓰기를 한 n = a+b과 return문은 sum이라는 함수에 속해있고, print함수는 sum함수 밖에 존재합니다. 결국 파이썬은 main()함수가 없는 대신에 들여쓰기가 되지 않은 코드인 level0의 코드를 가장 먼저 실행시킵니다.

그럼 이 문장을 풀어서 쓸 수 있겠죠. 출력을 하겠습니다. sum함수에 인수 10, 20을 넣은 값을요! 이런식으로 풀어서 쓸 수 있습니다.

 

<실행결과>

그럼 이제 파이썬의 코드 실행 순서를 아시겠나요?? (너무 돌아왔네요 ㅋㅋㅋ)

 

이제 함수를 만드는것과 매개변수에 대해서 배워보았고 이제 가변 매개변수와 기본 매개변수에 대해서 배워보겠습니다.

 

가변 매개변수

  파이썬의 print()함수 같은 경우 인자의 개수가 여러개가 들어가도 출력이 가능한 함수입니다. 다른 말로 함수의 인자가 몇개가 들어올지도 모르는데 print()함수는 다 출력해준다는것이죠. 이처럼 원하는 만큼 인자를 받을 수 있는 함수를 가변 매개변수라고 합니다. 가변 매개변수는 변수명 앞에 *을 붙힙니다.

 

<가변 매개변수 제약>

| 가변 매개변수 뒤에는 일반 매개변수가 올 수 없습니다.

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

이런식으로 가변 매개변수 values에 입력된 값을 n만큼 곱하여 출력하는 함수입니다.

n은 3이되니까 3의 배수를 출력하는것이지요.

 

기본 매개변수

  기본 매개변수는 매개변수를 입력하지 않았을 경우 매개변수에 들어가는 기본값입니다. 매개변수 = 값 형태로 들어가는것이지요. 기본 매개변수 뒤에는 일반 매개변수가 올 수 없습니다.

이런식으로 value값으로 혼공파라는 단어를 인수로 주면 value를 n번 만큼 출력하는 프로그램입니다.

 

키워드 매개변수

  키워드 매개변수는 앞에서 배웠던 가변 매개변수와 기본 매개변수를 함께 사용할 수 있는 방법을 구현하기 위해 키워드 매개변수 기능을 만들었습니다. 그전에 가변 매개변수와 기본 매개변수는 위치 매개변수여서 순서대로 인자를 입력받아 실행하는데 이와 반대로 키워드 매개변수는 순서에 상관 없이 직접 매개변수를 지정해서 찾아가는것입니다.

바로 예제를 보겠습니다.

보시는거와 같이 함수를 실행하면 우리가 위에서 배운거처럼 기본 매개변수와 가변 매개변수는 위치 매개변수여서 

"나의 이름은 20이고 나이는 55살이며 몸무게는 철수kg입니다."가 나와야하는데 어라라...?? 모두 정확한 위치를 찾아가서 출력이 되버렸네요?? 이처럼 키워드 매개변수는 직접 매개 변수명을 지정하여 매개변수를 전달하는 방식입니다.

그럼 기본 미션만 올리고 이만 5주차에 뵐게용!!

 

 

'Forensic > 혼공파 챌린지' 카테고리의 다른 글

혼공파 마지막 6주차 미션  (0) 2021.08.16
혼공파 5주차 미션  (0) 2021.08.07
혼공파 3주차 미션  (0) 2021.07.25
혼공파 2주차 미션  (0) 2021.07.17
혼공파 커리큘럼 및 1주차 미션  (1) 2021.07.08