alt

새 노트

Shared on October 12, 2026

05:03:40

지난 시간에 이어서 간단하게 지난 시간에 어떤 걸 배웠고 어떤 개념을 익혔는지에 대해서 간단하게 복습 빠르게 진행하고 오늘 수업 이어서 진행하도록 하겠습니다. 그래서 지난 시간에 저희가 총 4가지 주제에 대해서 배웠습니다. 홈빈이 말하면 3가지 주제 string, loop statement, 기본 함수들 print와 input

05:04:11

마지막에는 배운 것들을 기반으로 활용하는 방법에 대해서 프로그래밍 examples를 살펴보았습니다. 그래서 스트링 타입에 대해서 설명을 드렸었죠. 스트링 같은 경우에는 물자열을 보여주는 타입이다. 그래서 여기에 보이는 것처럼 우리가 뭔가 글자를 뽑고 싶을 때 이런 식으로 글씨를 뽑을 수 있다.

05:04:43

추가적으로 이제 우리가 숫자로 이렇게 문자열로 입력을 할 수 있다. 그래서 이런 식으로 작은 따옴표 아니면 큰 따옴표로 해줄 경우에는 이런 숫자도 문자열로 인식하고 그런 게 없으면 그냥 숫자로 인식을 한다. 그래서 이렇게 스트링으로 한 거는 스트링 타입 그 다음에 그냥 숫자만 나오면 인지점 숫자 타입으로 나온다 라는 것을 설명을 드렸었고요. 그래서 다양한 기능들에 대해서 설명을 드렸었고 그래서 만약에 우리가

05:05:18

따옴표나 작은 따옴표 안에 같이 따옴표를 사용하고 싶다 그러면은 반드시 이런 백슬래시를 써주면은 중복 사용이 가능하다 그거 말고도 또 다른 방법이 있었는데 예를 들어서 우리가 이 문자열을 작은 따옴표로 묶었다 문자열을 작은 따옴표로 묶으면은 안에 큰 따옴표를 사용을 할 수가 있고 예를 들어서 여기처럼 큰 따옴표로 묶었을 때는 안에 작은 따옴표를 써도 문제가 안 된다 대신에 우리가 작은 따옴표로 이런 문자열을 만들었을 때는 반드시 이 백슬래시랑 같이 써줘야 된다

05:06:02

마찬가지로 이제 뭐 큰따 보일 때도 똑같다 라는 것을 설명을 드렸었고요 그리고 우리가 어떤 문자열 같은 경우에는 메모리상에 이렇게 연속된 공간에 저장이 된다 그래서 우리가 high 느낌표 라는 이런 문자를 넣으면은 실제로 메모리 공간 어딘가에 이런 식으로 하나씩 저장이 되고요 그래서 그 s라는 object에 high라는 string을 저장을 하면은 s의 첫 번째 원소는 여기

05:06:35

S의 두 번째 원소는 여기 S의 세 번째 원소는 여기 이런 식으로 연속적으로 메모리에 저장이 되고 저장이 될 때는 이런 식으로 문자 값이 그대로 저장되는 게 아니라 ASCII 코드라고 하는 어떤 문자랑 숫자랑 대응이 되는 값으로 저장이 된다 그래서 ASCII 코드를 이런 식으로 보시면은 하위 같은 경우에는 앞서 봤을 때 72, 73, 33 에서 72번에 H, 73번에 I, 그 다음에 33번에 느낌표 이런 식으로 이 숫자들이 저장이 된다 라고 설명을 드렸었습니다 그래서 이런 ASCII 코드 같은 거는 굳이 외우실 필요 없습니다 그냥 뭐 이런 게 있다 정도만 알아주시면 되고요

05:07:24

그 다음에 이제 문자열을 조작할 수 있는 다양한 기능들에 대해서 살펴보았습니다. 그래서 Escape Character라고 해서 백슬래시랑 함께 다양한 문자 편집을 할 수가 있다. 그래서 우리가 작은 따옴표나 큰 따옴표를 문자열 안에 사용하고 싶으면 이렇게 백슬래시를 넣어주다. 그 다음에 백슬래시를 넣고 싶으면 백슬래시 두 개를 넣어주고요.

05:07:55

그 다음에 탭 같은 경우에는 이제 백슬래시하고 치를 하면은 8칸 정도의 스페이스가 생긴다 그 다음에 줄을 바꾸고 싶으면은 백슬래시 n 그 다음에 백슬래시 r를 하면은 carriage return 이라고 하는데 이게 좀 학생들이 질문을 하더라구요 그래서 이거를 좀 더 몇 개의 example을 보여드리면은

05:08:31

그러니까 그 화면에서 여기서 보시면은 문자에 백슬래시 R을 한다는거는 백슬래시 R부터 그거를 이제 시작점으로 가정당 이런 느낌으로 보시면 됩니다.

05:08:55

toh

05:09:09

그래서 예를 들어서 문자를 뭐 프린트하는데 저도 잘 안 보이네 잠시만요

05:09:35

그래서 문자를 이렇게 프린트를 하고 싶은데 뭐 A를 8번 한 다음에 backslash R 뭐 이거는 컴퓨터에 따라서 어떻게 표현이 되는지 조금씩 달라집니다. 그 다음에 B를 이렇게 출력을 하고 싶다 하면은 여기에 있는 B들을 앞에 A로 이렇게 가져오는 겁니다. 그 다음 PDB-UV, 그 다음

05:10:09

그래서 이 부분이 이제 이 백슬래시 R이 들어간 뒷부분부터 를 이 문장의 시작점으로 가져온다 이런 식으로 이해를 해주시면 됩니다. 이러한 개념으로 알아주시면 되고요. 만약에 A가 앞에가 너무 적었다 그러면 다 이제 G로 덮어지겠죠.

05:10:46

이는 이는 이가 다 나아옴을 시키게 되겠죠. 네, 이렇게는, 이가 the only one.

05:11:02

그래서 이런 스트링 같은 경우에는 non-scolar object라고 해서 non-scolar object는 더 작은 단어로 쪼갤 수 있는 object다 라고 했고 이런 식으로 각각의 단어들을 쪼개서 저장할 수 있기 때문에 우리가 이건 non-scolar object라고 설명을 드렸습니다. 그 다음에 이제 시퀀스 타입 같은 경우에도 이제 이거는 이제 여러 개 순서가 있게

05:11:38

원소들이 순서를 가지고 나열이 되어 있는 것들을 sequence 타입이라고 했고요 그래서 뭐 string이나 우리가 나중에 배운 list 이런 것들이 다 sequence 타입이다 그래서 실제로 거기에 접근하는 것은 뭐 어떤 거에 i 번째 원소에 이런 식으로 접근을 할 수가 있고 i 이상 j 미만의 어떤 인덱스를 접근하는 것도 가능하다 그 다음에 옆에 붙이는 것도 이런 plus 연산으로 가능하다 해서 다양한 것들을 이제 살펴보았죠

05:12:15

그래서 1, 2, 3에 0번째는 1이니까 1이 나올 거고 여기서 아리스토텔레에서 마이너스 1이라는 거는 G에서부터 샌다고 했죠 마이너스 1, 마이너스 2, 마이너스 3 이런 식으로 진행이 돼서 마이너스 1은 맨 마지막이니까 2 그 다음에 네 번째는 0, 1, 2, 3, 4 해서 C가 나오겠죠 그 다음에 슬라이스 같은 경우에는 I 이상 J 미만 이라고 해서 0부터 5 미만 그러니까 0부터 3번까지 0, 1, 2, 3, 4까지 이렇게까지 뽑는다 그 다음에 아무것도 안 쓰면 처음부터

05:12:55

그래서 처음부터 마이너스 1, 마이너스 2 미만이니까 여기까지 이런 식으로 뽑게 된다 그 다음에 아무것도 안 써주면 그냥 전체를 출력한다 라고 할 수 있고 그 다음에 이제 더하기 같은 경우에는 우리가 숫자 같은 경우에는 그냥 2 더하기 2 하면 4라는 정수 연산이 되는데 이런 문자열이나 시퀀스 타입 같은 경우에는 덧셈을 할 경우 뒤에 있는 거랑 앞에 있는 거랑 뒤에 있는 것들이 합쳐진다

05:13:32

그래서 이런 식으로 문자열 2와 문자열 2를 더하면 22가 된다 라고 설명을 드렸었습니다. 그 다음에 이제 Type Conversion 같은 경우에는 이제 표현할 수 있는 정보에 해당이 이런 식으로 Valiant이 가장 적고 그 다음이 지적, Float, String으로 이런 식으로 차례대로 된다. 그래서 만약에 우리가 큰 자료형에서 작은 자료형으로 바꾸면은 이제 정보를 많이 잃을 수 있다. 그래서 예를 들어서 3.5라는 Float를 인치적으로 바꿀 경우에는 3.5를

05:14:11

임시적으로 바꾸면 3이 되면서 0.5라는 정보가 사라진다 이런 식으로 설명을 드렸었구요 그 다음에 string도 다 float으로 convert 할 수가 있다라고 설명을 드렸었습니다 그리고 string을 임시적으로 바꿀 수도 있고

05:14:47

그 다음에 이제 Villeunt type 같은 경우에도 웬만하면은 이제 true를 갖는다 그래서 숫자 1이든 어떤 값이 있으면은 다 true라고 보고요 그래서 null이나 아니면은 0, 0값은 이제 float가, 아, false가 되고요 그 다음에 이런 식으로 아무것도 없으면 false, 그 다음에 space, 아무것도 없는 것처럼 보이지만 실제로 스페이스가 있기 때문에 이거는 트루다

05:15:18

라고 설명을 드렸었습니다 그래서 여기는 다 답이 들어가 있으면 true 그 다음에 문자열에도 0이 있지만 0이 인치잖아 float가 아니고 문자열이기 때문에 이것도 true로 나온다 그 다음에 0이나 none이나 비어있는 거 같은 경우에는 false로 나온다 라고 설명을 드렸고 이제 loop statement 같은 경우에는 우리가 갇힌 것을 반복할 때 사용이 된다.

05:15:50

그래서 이제 for문이랑 while문에 대해서 설명을 드렸고 while문 같은 경우에는 어떤 조건을 만족하면 그 루프 안에 있는 코드들을 계속 반복하고 어떤 조건을 만족하지 않을 경우에는 그 루프를 빠져나온다 그래서 이 루프가 루프를 돌 때마다 루프를 한 번 돌 다음에 어떤 테스트를 거치고 그 테스트를 통과하면은 다시 루프 두고 테스트에 실패하면은 코드를 밖으로 나온다 블록 밖으로 나온다 이렇게 설명을 드렸습니다

05:16:27

그래서 우리가 숫자를 맞추는 게임. 그래서 우리가 처음에 어떠한 숫자를 예측을 해보고 그것이 컴퓨터가 랜덤으로 뽑은 숫자와 맞는지 비교를 해라. 그 다음에 그 두 개가 다를 경우에는 계속 다른 숫자를 예측할 수 있도록 반복을 하고 만약에 그의 칩과 랜덤하게 뽑은 숫자가 같아지면은 이제 while문을 나와라. 이런 식으로.

05:16:59

그래서 우리가 코드로 짜놓고요 자세히는 설명하지 않겠습니까? 코드 부분은 개념만 짚고 넘어갈 거고 그 다음에 우리가 이제 while문을 계속 돌리다가 중간에 이렇게 break라는 걸 만나면 그 while문을 어떤 조건이 그러니까 어떤 상황에서도 이 while문을 나올 수가 있다 그래서 while문은 기본적으로 반복으로 어떤 while문 뒤에는 반드시 어떤 조건문이 나오는데 조건문이 true일 때만 반복을 하다가 이제

05:17:34

우리가 어떤 특정 조건을 안에 또 넣어줘서 그럴 경우에는 이제 브레이크를 해라 라고 하면은 이 브레이크를 만나는 순간 이 와일분을 우리가 무조건 빠져나올 수 있다 라는 것입니다 그것을 설명드렸고 그 다음에 이제 forStatement 같은 경우에는 이제 반복 우리가 어떤 비슷한 것들을 반복을 한다 그래서 이러한 sequence 가 있고 s 에 대해서 forP를 누르면 sequence에 있는 원소들, sequence는

05:18:09

배열을 갖는 일정한 어떤 여러 개가 순서대로 나열되어 있는 배열이라고 했죠. 그래서 그 시퀀스에 있는 원소를 하나씩 S로 담아오면서 이제 반복문을 수행한다 라고 했고 그래서 뭐 시퀀스가 A, B, C, D 를 하나씩 꺼내보면서 이 안에를 반복을 하게 된다. 그렇게 설명을 드렸고 그 다음에 이제 range 함수에 대해서 설명을 드렸고 숫자 하나만 있으면은 0부터 숫자

05:18:43

start부터 end-1까지 그 다음에 start를 지정해 주면 start부터 end-1까지 그 다음에 start, end, step 이렇게 세 개를 넣어줄 수 있다 그래서 start, end 그 다음에 step은 몇 개씩 오길 건지 1이면 그냥 연속되게 가져오는 거고 2면 1칸씩 띄워서 가져올 거고 3이면 2칸씩 띄워서 가져올 거다 라는 것을 설명을 드렸었고요 그 다음에 파이썬에서 제공해주는

05:19:14

기본 함수들에 대해서 설명을 드렸었습니다. 그래서 프린트나 인풋에 대해서 설명을 드렸고 여기 있는 것들이 어떻게 보면 다 파이썬에 내장되어 있는 개별 함수다. 그래서 프린트 인풋 아이디 타입 우리가 앞 시간에 썼던 모든 함수들이 이런 식으로 다이어리 되어 있고요. 그 다음에 이렇게 함수를 부르는 것을 call statement라고 하는데 함수 이름이랑 그 안에 들어가는 argument들을 넣어주면은 이제 함수가 호출이 된다.

05:19:55

So today we will learn how to call this call. Then print, in the case of the argument, it will be a result of the arguments in the inside. So, in the case of the elements, it will be a result of the elements in the inside. Input, we will receive the input. So, we will receive the input and stream object to the element.

05:20:27

So this way we can write your name in the screen and then you can type in the screen. If you type in the name, it will be a string object. So this is a string object. So this is a string object. So this is a string object. So this is a string object. So this is a string object. So this is a string object.

05:20:58

이렇게 입력을 받은 다음에 인치지어 타입으로 바꿔주거나 플로트 로 바꿔주는 등의 행위가 필요하다 라고 설명을 드렸고 그거에 이어서 이제는 앞에 배운 내용을 기반으로 다양한 프로그램들을 돌려봤습니다. 네 그래서 지난 시간에 배운 내용은 여기까지가 되겠구요. 그래서 오늘도 앞선 배운거에 이어서 새로운 강의 시작하도록 하겠습니다

05:21:34

''t't'iąią'' IS'

05:21:44

네, 오늘도 이제 지난 시간에 이어서 Python 프로그래밍 이어서 진행하도록 하겠습니다. 오늘도 이제 지난 시간에 이어서 Python 프로그래밍 이어서 진행하도록 하겠습니다.

05:22:08

, I, to, of, , ¿, ?, , a,, , , ..., ,,, ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

05:22:14

그래서 오늘 배울 내용은 크게 이렇게 세 가지가 됩니다. 그 다음에 다양한 function, 그 다음에 string 관련에 대해서 조금 더 설명을 드릴 텐데 아마 시간이 좀 부족할 것 같아서 아마 오늘은 크게 앞에 있는 두 주제 정도만 하고 다음 주에 이제 string을 조금 더 살펴보는 시간을 가질 것 같습니다. 여러분들도 이제 추석이니까 빨리 고향 내려가셔야 되잖아요.

05:22:46

그래서 오늘 빨리 하고 대신에 퀴즈가 있는데 수업이 끝나고 퀴즈를 보시고 퀴즈를 다 푸신 학생 같은 경우에는 그냥 복귀를 하셔도 되고 만약에 점수가 바로 뜹니다. 그럴 경우에는 해설이 필요하다 그러면 조교가 나와서 조교가 설명을 해줄 테니까 조교 설명을 조금 들으시고 싶은 학생들은 끝나고 남으셔서 설명을 들으시면 될 것 같습니다.

05:23:22

그리고 또 뭐가 있었지 하나가 또 안내 사항이 있었는데 아 네 퀴즈 컨닝은 하지 마세요 뭐 당연히 안 되는 거지만 아마 조교 분들이 중간중간에 앉아서 이제 뭐 AI를 불린다거나 이러한 것들을 이제 다 보니까 걸리지 마세요. 걸리면은 저도 책임 못 집니다.

05:23:54

어쨌든 안 그럴 거라 믿고요. 그러면 이어서 수업 진행하도록 하겠습니다. 그래서 우리가 지난 시간에 배웠던 거 간단하게 살펴보면 우리가 파이썬이라는 거는 어쨌든 오브젝트를 생성하고 그 다음에 우리가 생성된 오브젝트에 이런 식으로 이름을 붙일 수 있다 라고 설명을 드렸었죠.

05:24:27

Then if you put the name, you can use the name of the object to the other place. You can get that. So if we put the size of the 5, then you can use the size of the id. Then we put the size of the name of the 8.

05:24:58

사이즈라는 것이 처음에 5를 가리켰다가 8을 가리키게 되면서 사이즈가 아이디가 바뀌게 되죠. 그래서 그거를 그림으로 살펴보면 처음에 5라는 값을 지칭하는 이름이었지만 나중에는 8이라는 것을 지칭하게 되면서 5라는 오브젝트는 프로그램에 따라 조금씩 다르지만 사라지기도 한다. 근데 5 같은 경우에는

05:25:30

자동으로 파이썬 네버에서 자주 사용되는 문자 데이터이기 때문에 숫자이기 때문에 캐시에 계속 저장해놓고 지워지진 않는다. 예를 들어서 나중에 1200이나 2500 이런 잘 쓰이지 않는 숫자를 오브젝트로 만들 경우에는 그 오브젝트의 이름이 다른 것을 가리키는 순간 그 오브젝트는 사라진다. 근데 이거는 너무 복잡한 개념이고 그냥 여러분들은 이렇게 오브젝트의 이름을 바꾸면은 다른

05:26:06

각진 이름이 다른 오브젝트를 가리키면 원래 있었던 오브젝트의 이름은 사라진다 라고 이해를 해주시면 됩니다. 그 부분만. 그 다음에 이제 우리가 네임 스페이스라는 개념이 등장합니다. 그래서 네임 스페이스는 어떻게 보면은 우리가 오브젝트의 베리어블이 존재할 수 있는 공간을 나눠 놓은 겁니다. 이게 말로만 하면 조금 어려울 수가 있는데

05:26:39

어떤 개념이냐면은 같은 공간 안에는 같은 이름이 존재할 수 없다는 겁니다. 그러니까 앞에서도 이제 5라는 거에 우리가 사이즈라고 붙였는데 8이라는 거에 사이즈를 붙이는 순간 5에 있던 사이즈라는 이 배리어블은 8로 바뀌고 5가 존재하지 않습니다. 그래서 두 개가 이게 사이즈가 5랑 8을 동시에 가리키는 게 아니라 이제 나중에 선언된 변수만 가리킨다. 그래서 하나의 네임 스페이스에서는

05:27:15

하나의 variable를 지칭하는 오브젝트는 하나만 된다 예를 들면, 우리가 스타벅스에서 42번이라는 네임스페이스에서는 스타벅스라는 네임스페이스 공간에서는 42번이라는 주분이 하나밖에 존재하지 않죠 두 개가 존재할 수 없습니다 하지만 우리가 네임스페이스가 다른 공간 그래서 스타벅스라는 공간이랑 이디아라는 공간이 있다고 하면 스타벅스에도 42라는 게 존재할 수 있고 이디아에도 42번 주분이 존재할 수 있다 이러한 개념으로 이해해 주시면 됩니다

05:27:59

그래서 G에서 아마 G의 설명을 들으면 조금 더 명확하게 아실 수 있을 겁니다. 그래서 대표적으로 이 파이썬 프로그램을 시작을 하면 먼저 이 글로벌 네임스페이스가 있습니다. 그래서 전역 네임스페이스라고 해서 프로그램 전체에 사용되는 변수입니다. 아 네임스페이스입니다. 그래서 이런 식으로 우리가 코드를 돌리게 되면

05:28:32

pi라는 variable이 3.1416을 갖는 이러한 것이 생기고요 그 다음에 이제 tau라는 것이 여기에 저장이 됩니다 네임스페이스에서 뭐 이거는 어렵지 않죠 우리가 글로벌이라고 하는 전역 네임스페이스가 있고 거기에 이제 저장이 된다라고 설명을 드렸고 네 그래서 우리가 이제 함수에 대해서 본격적으로 들어가면은 이제 함수라는 것은 어떤 일을 수행하는데 재사용 가능한지

05:29:14

가능한 코드 블럭을 입력합니다. 그래서 함수는 0개 이상의 입력값, 0개 이상의 입력값이라는 것을 다른 말로 표현하면 입력값이 없어도 된다 라는 뜻이고요. 그 다음에 함수는 0개 이상의 출력값, 출력값이라는 것은 return값을 얘기하는데 0개 이상의 return값을 가질 수 있다는 것은 return값이 없어도 된다.

05:29:47

라는 의미입니다. 그래서 함수를 우리가 생각을 해보면 이런 믹서기라고 할 수가 있습니다. 믹서기라는 것은 어떻게 보면 고정이 되어 있죠. 믹서기를 우리가 구매를 하면 이 믹서기가 함수 역할을 하고요. 그 다음에 이제 과일들이 재료가 될 겁니다. 그래서 우리가 만약에 오렌지라는 인장, 입력, 인수, 오렌지라는 argument, 한글로 하면

05:30:19

인수 아니면 입력감 오렌지라는 입력감 오렌지라는 알규먼트를 믹서기에 넣으면은 오렌지 주스라는 결과를 반환하죠. 리턴하는게 오렌지 주스를 반환을 한다. 그리고 이제 사과를 넣으면은 입력에 사과가 되는거고 이제 함수는 그대로죠. 믹서기는 믹서기 기능을 그대로 합니다. 그 다음에 그거에 따른 결과는 이제 사과 주스가 되겠죠. 그래서 입력값에 따라서 우리가 어떠한 함수 내부에서 연산을 수행을 하고

05:30:56

그것에 대한 반환값을 반환한다. 그런데 뭐 0개 입력을 안 받아도 되고 출력을 안 받은 경우도 있다. 그래서 기존에 지난 시간에 저희가 파이썬 내부에 제공해주는 기본 함수들에 대해서 설명을 드렸었고요. 그래서 프린트, 아이디, 타입, 그 다음에 인트 다 배웠습니다. 이거는 안 배운 것 같은데 어렵지 않죠. 숫자 중에 최대값

05:31:27

세수값, 절대값, 반올림을 이런 식으로 내립니다. 어쨌든 그거를 이제 연산을 해준다. 그래서 이런 내정 함수들은 파이썬에서 미리 정해준 겁니다. 하도 자주 쓰이니까 기본적으로 우리가 따로 정의를 안 해줘도 출력 뭐 이러한 기능들을 다 사용을 할 수가 있다는 것이고 그래서 함수 호출 지난 시간에 배웠었죠. 뭐 프린트랑 이풋에 대해서 배워면서 간단하게 설명을 드렸는데

05:32:02

함수 같은 경우에는 함수 이름과 인자 이 두 가지로 나누어져 있죠. 그래서 함수 이름 우리가 더셈이면 add 그 다음에 뭐라고 할 수 있을까 다양한 게 있을 수 있죠. 사칙연산을 하는 것을 함수로 만들고 싶으면 여기에다가 Math Match 이런 식으로 할 수도 있고 함수 이름은 어떤 목적에 맞춰서 우리가 지어주면 되고 그 안에는 Arguments라고 하는 인자들 입력들을 받는다. 그래서 이러한 것들을 합쳐서 우리가 함수를 호출할 수가 있다는 겁니다.

05:32:49

그래서 함수를 호출한다는 것은 말 그대로 그냥 함수를 사용할 수 있게 한다. 이런 식으로 알면 됩니다. 그래서 우리 지난 시간에도 우리 프린트 함수 어떻게 사용하는지 설명을 드렸죠. 프린트 함수, 프린트라는 함수 이름이고 그 다음에 인자들을 여러 개 받을 수 있습니다. 그리고 맥스라는 함수도, 맥스라는 것도 여기서 2랑 3 중에 맥스는 3이고

05:33:20

그 다음에 12랑 2랑 max는 12고 12랑 3이 나왔으니까 15라는 값을 하는 거고 여기서 주의해야 될 것은 이 함수들을 return을 이제 max라는 것은 값을 return합니다 근데 print 함수 같은 경우에는 return을 하는 게 아닙니다 return을 하는 어떤 값을 return하는 게 아니고 그 안에서 그냥 출력만 해주고 return 값은 없습니다 따로

05:33:57

이거는 꼭 알아주시면 좋은 개념입니다. 그래서 이런 식으로 우리가 여러 개 인수 아니면 입력 값을 넣었을 때 왼쪽부터 하나씩 인수의 평가가 되는 거고요. 그 다음에 그 값들이 왼쪽부터 전달이 된다고 이해를 해주시면 됩니다. 그래서 인수 값을 전달을 하고 함수를 실행을 한다. 그래서 이런 식으로 프린트

05:34:29

이 안에 있는 걸 하면은 위에 있는 코드를 돌리면은 이런 식으로 나오는데 우리가 print 함수는 return 값을 반환하지 않는다고 했죠 print 함수는 return 값을 반환하지 않으니까 none이라는 개체를 생성하는 아무것도 return 받은 게 없으니까 아무것도 없는 거고 그러면 none이라는 개체가 되고 그걸 이제 print 하니까 none이라고 된다 정도로 이해를 해주시면 됩니다

05:35:01

그래서 인수를 계산을 할 때는 안쪽부터 바깥쪽부터 계산하는게 아니라 가장 안쪽에 있는 것부터 하나씩 수행이 되면서 계산이 된다. 그래서 ABS-2는 2, 그 다음에 라운드 4.3은 4, 그 다음에 2의 4승은 16 이런식으로 계산이 된다. 어렵지 않고 여러분들이 직접 한번씩 해보는게 훨씬 직관적으로 이해가 좋을 것 같습니다.

05:35:37

그래서 사용자 앞에서 살펴본 것들은 파이썬에서 저장된 빌트인 펑션입니다. 그래서 파이썬 안에 이미 저장이 되어 있는 함수들이고 그러면 이 기능들을 파이썬이 우리가 사용하고 싶은 기능들을 모두 넣어놓을 수는 없죠. 그래서 우리가 직접 만들어서 사용을 할 수가 있습니다. 그것을 우리가 사용자 정의 함수라고 정의를 하고요.

05:36:09

We can use it to make a mixers and make it to the same. If we used a mixers, we can make a mixers. We can use different different tools to make a better mixers. Or mixers and make a different device to make a mixers.

05:36:40

그래서 여기서부터 조금 중요합니다. 그래서 함수를 먼저 정의를 해야겠죠. 우리가 함수를 만들려고 하면은 다음과 같은 규칙을 따르게 됩니다. 그래서 처음에 이 depth라는 것은 define의 줄임말입니다. 그래서 함수 정의를 한다. 뭔가를 정의를 한다. 정의를 할 거고 그 다음에 함수 이름이 있어야 됩니다.

05:37:10

함수의 이름이 있어야 되고 그 다음에 함수 이름 뒤에는 이런 식으로 parameter라고 하는 argument라고도 하고요. parameter라고도 하는 이 매개변수들이 있습니다. 그래서 이 매개변수를 어떤 것으로 사용할 건지 함수의 입력값이 될 수 있겠죠. 그 다음에 이제 뭐 colon 이걸 찍어서 함수 선언을 마칩니다. 그 다음에 안에 코드를 이런 식으로

05:37:44

코드블락을 만들어서 코드를 실행을 합니다. 그러면은 앞에 있는 내용들은 다 똑같고 코드블락 안에는 여러 개의 스테이트먼치들이 존재하겠죠. 그 다음에 그 다음에 최종 결과값을 리턴한다. 그래서 리턴이라는 것은 우리가 반환을 하겠다. 근데 아까 처음에 설명을 할 때 리턴값을 안 가질 수도 있다고 했죠. 그래서 return 값이 없을 때는 return 값을 굳이 안 써도 된다

05:38:19

그 대신 이제 뭐 이렇게 비유를 할 수가 있겠죠. return 값을 한다는 것은 자기가 어떤 기능을 수행을 하고 결과 값을 받아 하니까 뭔가 결과를 보고하는 사람이고 이제 return 값을 쓰지 않는다 하면은 그냥 일만 하고 보고는 안 하는 사람입니다. 어 그래서 한번 뭐 간단한 함수를 같이 짜보도록 하겠습니다.

05:39:37

I.

05:39:54

간단하게 우리가 함수를 선언을 할 때 death로 먼저 시작한다고 했죠. 이런 식으로 하면 우리가 함수를 정의하겠다. 그 다음에 add, 덧셈을 하는 함수를 만들 거고 함수 이름은 여러분들이 원하는 걸로 지으시면 됩니다. 그 다음에 gn, 이렇게 인자를 가로 안에 만든다고 했죠. 그래서 두 수를 더하는 거니까 x, y

05:40:26

이렇게 x라는 값이랑 y라는 값을 받겠다 그러면은 여기까지가 이제 선언이 끝나는 거고 그 다음에 결과 우리가 결과는 x랑 y랑 더하는 것을 할 거고 그 결과 값을 리턴한다 리서치를 리턴하겠다 이런 식으로 하면은 우리가 덧셈을 정의한 겁니다 그래서 예를 들어서 우리가

05:41:00

z는 add라는 함수를 쓸 건데 거기에 2랑 3랑 2랑 3랑 이런 식으로 넣겠다 그리고 print z값을 print 하면은 이제 이 함수가 실행이 되면은 여기서 이제 2랑 3랑 add에 들어가니까 add가 호출이 되면서 2랑 3이 x에는 2, y에는 3이 들어가서 x에는 2, y에는 3이 들어가서 두 개를 더해서 5라는 값을 가리키게 되고 리졸치가 5라는 값을 가리키게 되고 그 다음에 5라는 값을 방안을 하니까 z에는 5라는 값이 저장이 될 거고 그 5라는 값을 print 하니까 여기 보시면 이제 5가 나온다 뭐 이런 식으로

05:41:53

그래서 여기는 간단하게 짰지만 여러분들이 나중에 여러 개 기능을 넣을 수가 있겠죠 이거는 여러분들이 나중에 더 잘 짜실 수 있다고 생각을 합니다

05:42:27

그래서 함수를 우리가 이런 식으로 정의를 하면은 우리가 그 프로그램을 시작을 하면은 그 함수들은 글로벌이라고 하는 네임스페이스 아까 전역 네임스페이스라고 했죠. 그래서 그곳에 이제 스퀘어라는 이 함수가 함수라는 것으로 이제 함수라는 객체로 선언이 된다라고 보시면 되고요. 이거는 뒤에서 조금 더 자세하게 설명해 드리도록 하겠습니다. 그래서 이런 식으로 스퀘어라는 것을

05:43:01

우리가 square를 선언을 하면 이 square는 이제 함수인거고 그 다음에 square가 메모리 어딘가에 저장이 되어 있을텐데 그거의 id도 이런 식으로 뽑을 수 있고 time은 앞에 말했던 것처럼 이런 식으로 함수다 function time이다 이런 식으로 이해를 해주시면 됩니다 어쨌든 우리가 함수를 만들고 그거를 선언을 하게 되면 이제 함수를 만들게 되면은 그거는 이제 object로서 선언이 되는 거고 앞에 우리가 integer 아니면

05:43:38

float 이런 것들도 다 오브젝트였죠 그런 오브젝트처럼 함수도 같이 오브젝트로 처리가 된다 그래서 우리가 square라는 함수를 정의하기 전에 사용을 하면은 에러가 발생합니다 이게 무슨 말이냐 하면은 어떤 함수가 정해지기 전에 뒤에서 사용되면 안 된다는 겁니다

05:44:26

보시면은 여기 함수가 여기서 저장이 됐거든요. 함수가 여기서 선언이 됐는데 그것보다 먼저 이렇게 제체를 선언을 하면은 에러가 난다는 겁니다. 왜 에러가 났냐. 이 파이썬 언어의 특징이 있는데요. 파이썬 언어는 인터프리트 언어입니다. 그러니까 인터프리트 언어 이거는 조금 어려운 개념입니다. 그냥 이러고 서로 에러가 나는구나 라고

05:45:01

이 파이썬이라는 것은 위에서부터 한 줄 실행하고 그 다음 줄 실행하고 그 다음 줄을 실행합니다. 그러니까 맨 처음에 위에 함수가 정의되기 전에 함수를 호출을 하게 되면 그 전에 저장된 것이 없기 때문에 글로벌 네임스페이스에 어떠한 정보도 없기 때문에 에러가 납니다. 이게 정의가 되어 있지 않다.

05:45:32

그런 식으로 오류가 나기 때문에 반드시 함수를 먼저 정의를 해준 다음에 그 뒤에 우리가 호출을 진행을 해야 된다. 이런 설명을 하고 있습니다. 그래서 이 스퀘어를 당연히 이 스퀘어가 정의된 것보다 뒤에 밑에 줄에 해줘야 된다는 겁니다. 그렇게 하는 이유는 파이썬이라는 것은 인터프리터 방식으로 위에서부터 한 줄씩 실행을 하기 때문이다. 정도만 알고 계시면 됩니다.

05:46:11

그래서 우리가 이렇게 함수를 정의하게 되면은 global namespace에 square라는게 이제 함수가 정의가 되는 거고요 그 다음에 이제 return 값을 이제 우리가 여기서 이제 5라는 값을 넣어줬으니까 return 값에는 5 곱하기 5, x는 5가 들어가겠죠 여기 square에 5를 넣었으니까 거기에 5를 넣어주니까 x는 이 스퀘어라는

05:46:43

여기서 우리가 함수를 선언을 하게 되면은 새롭게 함수에 대한 namespace가 선언이 됩니다. 그래서 여기서는 이제 함수에 대한 어떤 함수만 가질 수 있는 변수들이 저장이 되고 그래서 x라는 변수가 안에 있었죠. 이게 함수 안에. 그리고 이 x라는 것이 선언이 되고 우리가 호출을 하게 되면은 이 x에다가 5를 넣기 때문에 여기에 5가 이런 식으로 참조하게 된다.

05:47:15

이해를 해주시면 됩니다. 그러면은 이제 O라는 값을 통해서 리턴 밸류는 5x25가 되고 그 25라는 값을 반환을 해서 이제 ANTHOR라는 값이 25를 가시게 됩니다. 그러다 보니까 우리가 함수를 한번 호출하고 리턴을 하게 되면은 이 함수 공간은 이제 없어집니다. 무슨 말이냐 하면은 여기서 우리가 함수를 이제

05:47:48

선언을 하잖아요. 선언을 하면 이제 스퀘어 함수 공간이 따로 생기게 되고 근데 이제 리턴을 하게 되면 이 함수 공간은 없어집니다. 그래서 이런 식으로 최종 결과만 글로벌 네임스페이스에 남게 된다 라고 이해를 해주시면 됩니다. 이게 조금 복잡하기는 한데 뒤에 지금 이 자료를 보면은 조금 더 확실하게 이해가 될 겁니다.

05:48:20

그래서 한 줄씩 살펴보면 처음에 우리가 함수를 선언을 하면 전역변수에 함수 square라는 이름이 생기게 되죠. 그 다음 줄을 봤더니 some square라는 함수를 정의를 했습니다. 그러면 이 함수가 global 변수에 생기게 되고요. 그 다음에 여기를 가서 some square라는 것을 호출을 합니다.

05:48:54

sum square라는 것을 호출을 하는데 x에 5, y에는 12 그러면은 여기에 이제 sum square라고 하는 네임스페이스가 하나가 생기고 그 sum square의 네임스페이스에는 x는 5, y는 12라는 변수가 생기게 되고 그 다음에 이제 return 값을 봤더니 return 값에서 square라는 함수를 호출하게 됩니다

05:49:25

square x를 호출을 하게 되고요. 그러면 또 square라는 네임 스페이스가 생기게 되겠죠. 그 다음에 네임 스페이스에 함수가 생성이 될 때 x에 5를 넣어줬으니까 x값에 5를 넣어줬으니까 5가 들어와서 5 곱하기 5를 수행해서 리턴 값을 25를 반환을 하게 되고요. 그 다음에 리턴 값을 반환하고 나니까 일단 이 square는 없어졌는데 다시 옆에서 square를 선언을 합니다. 엄밀히 말하면 여기서 square가 없어지고 다시 square가 생긴 겁니다. 다시 옆에서 square를 선언을 합니다.

05:50:07

다시 생기면서 이번에는 y값을 넣어줬기 때문에 여기가 12가 들어가게 되고 리턴값을 12 곱하기 12 해서 144를 반환을 합니다. 그래서 25 더하기 144를 계산을 해서 169값이 리턴값이 되고요. 그러면 리턴값을 반환을 하면서 이 sum square가 없어집니다. sum square가

05:50:38

169라는 값을 반환을 하고 그러면은 research라는 것이 169라는 오브젝트를 가리키게 된다 이런 식으로 이해를 해주시면 됩니다 뭐 어렵지 않죠? 처음부터 다시 한번 설명 드리겠습니다 우리가 먼저 이런 식으로 코드를 돌리면은 위에서부터 namespace에 변수를 추가합니다 그래서 처음에 맨 위추를 선언을 하고 square라는 합법을

05:51:15

함수 이름을 global namespace에 저장을 해주고 그 다음에 some square라는 함수를 global namespace에 저장을 합니다. 그 다음에 some squares라는 함수를 호출을 하게 되면 some squares라는 함수 namespace가 생성이 되고 그 namespace 안에서 각각의 변수들이 값을 가지게 되고요. 그러면 여기서 이제 return을 할 때 return을 하기 위해서 square x를

05:51:52

그러면 square x를 선언을 하니까 square x를 선언을 하니까 square라는 네임스페이스가 생성이 되고 거기에 x는 5라는 값을 넣어주게 됩니다 그다음에 5를 넣어서 계산을 하고 return을 하게 되면 25값을 반환을 하고요 반환을 1과 동시에 square라는 변수가 없어졌다가 다시 여기서 square y를 선언을 하니까 다시 생겨서

05:52:28

y, 10이라는 값을 넣어줍니다. 그러면 x에는 10이라는 값이 들어가고 12에 제곱해서 144를 리턴을 하면서 이 스퀘어 네임 스페이스가 없어지고 리턴 값에는 25랑 144, 그래서 169라는 리턴 값이 생기고 리턴을 하면서 이 썸 스퀘어 스페이스가 없어지겠죠. 그러면은 여기서 169, 리턴트가 169를 갖게 된다. 네.

05:52:59

이 순서로 이해를 해주시면 됩니다. 그래서 함수와 추상화라는 내용이 있는데 이거는 뭐 별거 아닙니다. 그러니까 우리가 뭔가 말로 설명을 하는 것을 이런식으로 수식으로 표현을 할 수 있다는 거죠. 그래서 제곱, 제곱이라는 스퀘어, 스퀘어링이라는 것을 우리가 스퀘어링이라는 함수를 만들었고 그 스퀘어링이라는 것은 무언가의 제목

05:53:31

X의 제곱은, 아, 무언가의 제곱은 그것과 자기 자신의 곱시다. 그래서 무언가를 두 번 곱한다. 무언가와 자기 자신을 곱한 것이다. 라는 것을 이런 식으로 표현을 한다. 뭐 그런 정도만 알고 계시면 됩니다. 이게 어려우시면 오히려 직관적으로 이해해 주시는 게 좋고요. 비슷하게 우리가 화씨를 섭씨로 변환하는 것은 어떤 화씨,

05:54:03

화씨에서 31을 뺀 값에 9분의 5를 해준다. 그러니까 화씨를 섭씨로 바꾸는 것은 우리가 화씨를 섭씨로 바꾼다는 것을 함수로 정의를 했고 그러면 화씨가 입력으로 들어올 거고 그러면 화씨에서 31을 빼고 9분의 5를 해준다. 화씨에서 31을 빼주고 9분의 5를 해준다. 이런 식으로 우리가 머리에 생각하고 있는 절차를 수식적으로 표현하면서 함수를 만들 수 있다.

05:54:51

이거는 굳이 알지 않으셔도 되고요. 그래서 지금 빠르게 10분 정도 쉬면서 출석체크 진행하도록 하겠습니다. 수업 이어서 진행하도록 하겠습니다. 앞에 내용 다 이해하셨죠? 핵심만 빠르게 설명드리도록 하겠습니다. 좀 중요해서 지난번에 말해 드렸던 것처럼 이제 여기 부분은 한국어로 제작이 되어 있는데 그 이유가 제가 봤을 때 초보자면은

06:07:59

The problem is that you do well, but the non-conference of the non-conference is a lot of forgetting. This is really important, but more clearly than the other one. The course is the main goal of the English. The goal is to understand the goal of all students. So this is a very important part

06:08:32

복잡하기도 하고 어렵기도 하고 그래서 이 부분은 한글로 이런 식으로 만들었다 만들어서 제공을 하고 있습니다 그래서 저희가 함수에 대해서 배웠었죠 그래서 함수는 크게 함수 이름이 있고 함수가 가지는 입력 그 다음에 함수가 반환하는 반환값 이 세개로 이루어져 있다 라고 이해를 해주시면 되고요 그래서 함수

06:09:04

다양한 것이 있고 우리가 직접 함수를 만들어서 사용할 수가 있다 그리고 이런 식으로 함수는 어느 정도 구조화가 되어 있는 겁니다 그래서 that 1번 필수고요 필수로 써줘야 되고 함수 이름 당연히 필요하죠 그 다음에 이 파라미터 앞에 설명을 했었죠 입력 인자를 0개 이상 갖는다 없어도 된다 그러니까 이 부분이 비어있어도 됩니다

06:09:38

대신에 여기 괄호는 반드시 있어야 됩니다. 안에는 비어 놓더라도 괄호는 반드시 넣어줘야 한다. 그리고 이 세미콜론으로 이 함수 선언을 마친다. 그 다음에 안에 statement 없어도 되는데 없으면 함수를 만들 필요가 없죠. 안에서 어떤 기능을 하려고 하는데 기능을 안 넣은 거니까

06:10:12

근데 뭐 없어도 되긴 하지만 일반적으로는 다 넣어주고 리턴값도 저희가 없거나 0개 이상의 리턴값을 한다고 했죠 그래서 리턴값을 이런 식으로 반환을 한다 아 그리고 추가적으로 간단하게 설명을 드리면 아까 0개 이상의 리턴값을 받는다 그 의미는 없을 수도 있다 그 다음에 2개 3개를 받을 수 있다 그래서 이런 식으로 x, y로

06:10:43

이런 식으로 넣어서 리턴을 해 줄 수 있다 그러면은 최종 리턴값이 리졸츠 xy가 되겠죠 그래서 이 함수가 결국에는 이제 세 개 리턴값을 받으니까 이런 식으로 abc 는 add 이상 이런 식으로 하면은

06:11:17

5, 2, 3이 이런 식으로 반환이 되겠죠. 이런 식으로 여러 개의 값을 리턴할 수도 있다. 로 이해를 해주시면 됩니다. 그 다음에 함수를 정의하기 전에 먼저 선언을 하면 안 된다. 정의가 이루어진 다음에 선언을 호출을 해줘야 된다. 그래서 먼저 호출해주면 안 된다. 그 이유는 파이썬이라는 언어가 인터프리터이기 때문이다. 컴파일러가 아니라

06:11:50

그래서 이런 식으로 수행을 하고요. 그 다음에 함수를 선언을 하면은 namespace에 이런 함수들이 저장이 되고 호출을 하는 순간 그 호출을 하는 순간 그 함수에 namespace가 별도로 생기고 그 namespace 안에는 그 함수에 들어간 인자들을 또 관리를 한다. g에서 배우겠지만 여기서 쓰이는 x값을 여기서 다른 함수에서 사용할 수는 없습니다.

06:12:28

to the 。 。 。

06:12:46

그래서 함수는 실질적으로 우리가 말로 표현하는 것을 구현을 한 거나 정도로 이해를 해주시면 됩니다. 그리고 이제 함수에 대해서 조금 더 살펴볼 건데요. 이제 처음으로 살펴볼 것은 알규먼트, 그러니까 함수의 입력에 대해서, 함수 입력을 어떻게 하는지에 대해서 살펴보도록 하겠습니다. 그래서

06:13:18

함수 이름을 이제 함수 개를 이렇게 선언을 한 다음에 입력 입수를 이런 식으로 세 개를 선언을 합니다 그래서 first name, last name, reverse 라는 변수를 사용을 할 거다 그래서 뭐 여기는 아까처럼 x, y, z가 될 수도 있고 여러분들이 직관적으로 이해하기 쉬운 것들을 넣어주면 되는 거죠 그러면은 이제 매개명수를 이제 넣어줘야 되는데

06:13:54

우리가 함수를 호출할 때 이런 식으로 3개의 입력을 받으면 3개를 차례대로 써주면 이 위치 인수라는 것은 이렇게 차례차례로 1대1로 매칭이 되는 겁니다. 그래서 영훈이라는 것이 First Name이라는 변수에 선언이 되고 손이라는 것이 Last Name에 할당이 되는 거고 First라는 값이 Reverse에 할당이 됩니다. 그래서 위치 인수라는 것은 위치에 맞게 1대1로 매칭이 돼서 할당이 된다

06:14:35

라고 이해를 해주시면 됩니다 그러면 여기서 함수를 호출하면 어떻게 되겠어요 print name이라는 namespace가 생기겠죠 print name이라는 namespace가 생기고 그 namespace 안에는 first name, last name, reverse 라는 변수가 선언이 될 겁니다 그 다음에 first name, last name, reverse 라는 것의 값은 각각 1대1로 매칭이 되는 값들이 할당이 됩니다 그러면 여기서 이제 들어와서 함수가 계산을 하겠죠 if, reverse

06:15:10

reverse가 false 였으니까 false는 조건을 만족하지 않으니까 여기에 오겠죠 그러면 else가 돼서 print first last name이 출력이 될 거다 라는 것만 알아 두시면 됩니다 뒤에 슬라이드를 안 만들어 놓았네요 그 다음에 키워드 인수가 있습니다 키워드 인수는 이렇게 키워드를 정의를 해주는 겁니다

06:15:42

그래서 first name은 용훈, last name은 송, reverse는 first라는 값을 넣어주겠다는 것을 이렇게 키워드를 여기에 있는 변수들을 여기 변수 이름들을 가져와서 여기서 선언을 해주는 겁니다. 이렇게 했을 때 장점은 뭐 장점이라고 하기는 좀 애매할 수 있지만 마음대로 순서를 바꿔서 사용해도 되는 거잖아요

06:16:14

그래서 이런 식으로 first name, last name, reverse 이렇게 쓸 수도 있지만 우리가 순서를 바꿔서 last name, first name, reverse를 하더라도 이 last name이라는 것에 송이라는 값이 할당이 되고 first name이라는 것에 용훈이라는 게 들어가고 reverse에 first라는 값이 할당이 된다는 것입니다.

06:16:50

그리고 여기서 가장 중요한 개념은 이제 위치인수는 키워드 인수 앞에 와야 된다 그러니까 위치인수가 다 선언이 된 다음에 뒤에 키워드 인수가 선언이 되어야 된다 라는 겁니다 그래서 아무렇게나 우리가 넣고 싶은 대로 넣는 게 아니라 위치인수를 먼저 넣어 준 다음에 마지막에 키워드, G에 키워드를

06:17:22

인수를 사용을 해준다. 그래서 예를 들어서 이런거죠. 키워드 인수를 먼저 할당하고 뒤에 위치 인수를 사용을 하면은 이제 에러가 납니다. 그래서 포지션이 틀렸다 라는 에러가 발생을 한다 그 정도만 알고 계시면 됩니다. 그래서 이거는 뭐 내부 디자인에 의해서 이런식으로 오류가 났는데 그래서 결론을 말씀을 드리면은

06:17:55

반드시 위치인수가 먼저 선언이 되고 뒤에 우리가 두 개를 같이 쓰고 싶다. 같이 쓰고 싶으면은 위치인수를 먼저 선언을 해주고 뒤에 키워드 인수를 넣어줘야 된다. 이렇게 알고 계시면 됩니다. 그 다음에 마지막으로 이제 기본값이라는 개념이 있습니다. 기본값. 기본값이라는 것은 디포트, 밸류가 되고요. 그럼

06:18:26

기본적으로 우리가 너무 자주 쓰이는 값은 미리 함수에서 저장을 해서 사용을 하는 겁니다 그래서 여기 보시면 우리가 함수를 호출을 할 때 먼저 위치인수부터 선언을 하고 이 세 번째 거를 안 넣었죠 세 번째 거를 안 넣었는데 세 번째 거가 리버스는 우리가 이미 false라고 함수를 선언을 할 때 false라는 값을 사용하겠다고 선언을 한 겁니다 그러니까 false라는 값이 자동적으로 생성이 돼서

06:19:04

들어가게 되는 거고요 그래서 여기서 또 중요한 개념이 어... 잠시만요 네 잠시만요 뒤에 네 그래서 자주 쓰이는 값들은 이런 식으로 키워드로 정의를 해놓고 선언을 안해준다 그 다음에 선언을 해주면은 우리가 특정 값으로 선언하고 싶을 때는 이런 식으로 키워드 인수로 넣어도 되고 위치 인수로 전달을 해줘도 된다

06:20:13

빠진 개념은 없는 것 같네요. 이런 식으로 우리가 사전에 기폴드 값을 선언을 해서 사용을 할 수가 있다는 것을 설명을 드렸고요. 그래서 같은 함수입니다. 그래서 함수 내에서 아까 저희가 namespace 하면서 함수 내에서 변수를 선언을 했죠.

06:20:47

그래서 그 함수 내에서 선언이 되는 것들을 지역 변수라고 부르고 지역 변수는 함수를 혼출할 때마다 생성이 된다. 그래서 함수가 실행되는 동안에만 존재하고 함수 밖에서는 존재하지 않는다. 뭐 이렇게 말로 복잡하게 설명을 해놨는데 뒤에서 이제 네임스페이스 관점에서 한번 살펴봅시다. 이거가 쉽게 이해가 될 겁니다. 그래서 우리가 함수를 이렇게 만들었어요. 2차 함수의 값을 구해주는 어떠한

06:21:24

어떤 함수를 이런 식으로 만들었습니다. 그리고 그걸 통해서 각각의 함들을 first항, second항, third항, 첫번째항, 두번째항, 세번째항을 구하고 그것들을 다 더하는 값을 리턴해주는 그런 식으로 함수를 짰습니다. 그러면 먼저 위에서부터 코드가 들어가죠. 그러면 먼저 Quadratic이라는 함수를 정의를 합니다. 그러면은 글로벌 레임스페이스에 쿼드라틱이 생기겠죠

06:21:58

그런 다음에 여기 안에 이제 여기를 바로 실행을 하겠죠. 그러면은 Quadratic이라는 부분에 와서 이 Quadratic이라는 함수 호출을 하고 인자들을 2, 3, 4, 0.5를 받는다. 그렇게 하면은 이 Quadratic이라는 네임스페이스가 하나 더 생기겠죠. Quadratic이라는 네임스페이스가 생기고 그 안에 사용되는 abcx라는 값들이 이제 사용이 될 겁니다. 이런 식으로

06:22:30

아까는 계속 똑같죠. 그런 다음에 함수의 Quadratic 안에서 이 first라는 값을 계산을 해주고 그 다음에 second라는 것이 생길 거고 그 다음에 third라는 것이 생길 겁니다. 그런 다음에 이제 return을 하겠죠. return을 하면은 return 값은 6이 되겠죠. 이걸 다 계산을 해서 더하면은 6이 됩니다. 그래서 6이 되고 리턴을 하면 어떻게 된다고 했어요?

06:23:03

그 namespace가 없어진다고 했죠. 그러면은 커널한 틱이 사라지면서 answer에만 6이라는 것이 남게 되고 그러면은 이 6이라는 것은 이제 answer는 6이 되지만 여기서 이제 first라는 것을 출력을 할 여기 있던 우리가 first 값을 출력을 하고 싶어서 print first를 했더니 에러가 납니다. 왜냐하면 이 namespace가 다 지워졌죠. 다 지워진 상태에서 우리가 first라는 값을 가져오라고 하니까 당연히

06:23:38

실행이 안되겠죠. 퍼스트를 찾을 수 없으니까. 그렇기 때문에 이렇게 오류가 발생을 하고 이것이 유효범이라는 겁니다. 그래서 우리가 어떤 프로그램이 어떤 함수가 다를 수 있는 공간에서 이름을 사용할 수 있는 프로그램의 어떤 영역을 이름의 유효범이라고 한다. 그래서 유효범위가 함수 안에서는 이런 식으로 선언이 되지만 글로벌에서는 유효하지 않고

06:24:15

대신에 글로벌에 선언이 된 것을 함수 안에서는 사용할 수 있습니다. 왜냐하면 이런 식으로 함수 안에서 사용이 될 때 글로벌에 어떤 이름이 저장이 되어 있다면 그것을 가져와서 사용을 할 수가 있다는 것입니다. 그래서 유효 범위가 크게 4가지가 있습니다. 그래서 로칼스코프 같은 경우에는 가장 작은 단위 그래서 함수 내부에서만 사용을 하고

06:24:48

그 다음에 Inclusion Scope라는 것은 함수 안에 함수 아까 저희 볼 때 앞에 스퀘어성 함수 안에 함수를 선언을 했죠 그러면 이것이 조금 더 넓은 범위로 활용이 될 수 있다 이것도 뒤에서 천천히 살펴볼 건데 어쨌든 이런 식으로 함수 중첩이 있을 때 그 안에 있는 로컬스코프까지 커버를 할 수 있고

06:25:21

그 다음에 그것보다 조금 더 넓은게 global scope로 그래서 전체에서 사용을 할 수 있고 그 다음 빌지는 정 말고 파이썬 4장 그래서 어떤 4장 되어있는 변수는 그냥 가져와서 사용할 수 있다 정의 없이 어떻게 보면은 4장 함수 같은 것들도 다 이런 식으로 되겠죠 그래서 local scope라는 것이 뭐냐면은 우리가 함수를 선언을 하면은

06:25:52

그 함수 안에 있는 코드 블록 안에서만 유용한 코드 블록 내에서만 사용이 가능한 영역을 로컬 스코프라고 하고 그래서 아까 앞에서 설명드렸던 것처럼 함수를 호출할 때 생성이 되고 그 다음에 리턴을 하면은 그 내의 스페이스는 없어진다 호출할 때 생성이 되고 이제 호출이 끝난다는 것은 리턴을 한다는 거고 리턴을 하면은 소멸을 한다 라는 것입니다 그래서 이런 식으로 스퀘어에 10을 넣으면은 여기서 스퀘어에서 10을 하고 리서치라는 것에 대기 저장이 될 텐데

06:26:33

여기서 이제 함수가 리턴을 하는 순간 이 namespace가 없어지고 return이라는 변수는 없어진다는 말입니다. 그 다음에 이제 including scope가 조금 헷갈릴 수 있는데 정의에 따라서 진행하면 헷갈리지 않습니다. 그래서 함수가 중첩되어 있다는 것은 함수 안에 또 함수를 선언을 하는 겁니다. 그러면은 안쪽 함수의 코드 블럭을 local 해서 안쪽 함수가 local이고 그 바깥쪽에 있는 것을 여기를 이제

06:27:10

함수 안에 있는 함수를 local, 그 다음에 얘는 closing 이라고 합니다 여기 큰 범위를 그래서 살펴보면 우리가 처음에 함수를 시작하면 outer function이라는 거에 글로벌에 저장이 될 거고 그러면 이제 outer function이라는 거를 선언을 호출을 하면 Auto Function이라는 게 이제 네임 스페이스가 생깁니다

06:27:41

그러면은 이 outer function이라는 곳에 namespace가 생기고 그 다음에 이제 variable이 100이라는 값을 갖겠죠 var이라는 값이 생성이 되고 그 다음에 여기서도 함수가 생성이 되겠죠 inner function inner function이라는 게 생성이 될 거고 그 다음에 여기서 inner function을 호출을 하면은 그 다음에 inner function을 호출을 하면은 그 안에

06:28:12

또 새로운 inner function이라는 name이 생기게 됩니다. name space가 생기게 되고 그러면 그 안에서 var를 프린트한다고 했을 때 이 name space 안에 var이 없더라도 이 var이라는 것이 auto function 여기에 선언이 되어 있죠. 그러니까 여기에 있는 값이 와서 사용을 합니다.

06:28:46

print var를 하면은 그대로 또 프린트가 되겠죠. var이 프린트가 될 겁니다. 그 다음에 이제 그렇게 해서 이 함수 호출이 다 끝났죠. 리턴이 없더라도 어쨌든 마지막 줄까지 다 실행을 하면은 함수가 끝났죠. 함수가 끝나니까 outer function은 없어지죠. outer function은 없어지고 그러면 inner function도 이제 없어지게 됩니다. 그러면은 당연히 inner function을 호출하는 순간 에러가 발생하게 되겠죠.

06:29:23

이겁니다. 개념이. 어려운 말로 되게 복잡하게 설명을 했는데 우리가 이 코드를 위해서부터 하나씩 해석을 해나간다. 그리고 함수가 선언이 될 때 동시에 호출을 하면은 네임 스페이스가 생성이 되고 그 다음에 리턴을 하면은 그 네임 스페이스가 없어지고 그 다음에 그 안에서 우리가 어떤 변수가 선언이 되어 있으면은 그 안에서도

06:30:00

I can only remember this one. So, I'll explain it again. When the values are defined, the change of the object is created. The change of the object is created. And when the values are defined, the name space is created. And when the name space is created, the name space is created. The name space will be chosen by the name space. The name space will be chosen by the name space.

06:30:37

함수를 함수 안에서 선언을 하면은 함수도 이 함수 안에 새롭게 정의가 되겠죠. 그런 다음에 함수를 호출을 하게 되면은 호출을 하는 순간 이제 네임스페이스가 생성이 됩니다. 그럼 네임스페이스가 생성이 됐고 그 다음에 이제 var 이라는 함수를 이제 어 프린트 하도록 하는데 var 이 inner function 이라는 것은 없지만 outer function에 존재하기 때문에 이거를 가져와서 프린트를 할 수가 있고

06:31:19

네, 그런 식으로 이제 함수가 끝나면은 함수가 끝나면은 이 namespace는 없어진다고 했죠. namespace가 없어집니다. 그 다음에 다시 이 var를 이제 사용을 하면은 프린트하고 여기서 함수가 끝나면은 이 namespace도 사라진다. 그 다음에 namespace가 사라지면은 이제 inner function을 여기서 다시 call을 하더라도 정의가 안 돼 있기 때문에 어디에도 저장되어 있지 않기 때문에 사용할 수가 없다 라는 것을

06:31:51

네 그렇게 되고요. 그 다음에 뭐 글로벌 스커프 같은 경우에는 파이썬 프로그램의 최상위 범위 사실은 뭐 빌치인이 있지만 실질적으로 여러분들이 사용하는 최상위 범위로 최상위 수준에서 정의하는 모든 이름이 이 범위에서 소속한다. 그러니까 최상위 수준에서 정의한다는 것은 그냥 가장 위에서 정의를 해준다. 그래서 글로벌 스커프에 정의된 모든 이름은 모든 코드에서 접근이 가능하다.

06:32:28

So if we choose one global change, we can only use it in any place. And then built-in scope is actually the highest level, but it's actually more on the top. So we can also have to do a global scope.

06:33:04

You should have to write it, but in the case of building, we can't write it, but we can't write it. So there are four elements of the elements. Print, ID, etc. We can use it as a way to write it. So today's course, let's do this next week. It will be soon.

06:33:42

여기까지 우리가 함수에 대해서 살펴보았구요. 그 다음에 이제 스크린에 대해서 좀 더 살펴보도록 하겠습니다. 문자열을 지난 시간에 우리가 복습하면서도 했었죠. 여러가지 편집하는 방법을 배웠었구요. 그거에 대한 요약 내용입니다. 근데 앞선 시간에 제가 복습을 했기 때문에 이 부분은 다시 또 복습하지 않고

06:34:30

그래서 메소드라는 것이 존재하는데 파이썬 개념에는 함수랑 비슷하게 메소드라는 것이 존재합니다. 그래서 메소드라는 것은 어떤 객체의 자료형에 바인딩되어 있는 함수를 우리가 메소드라고 합니다. 그러니까 우리가 객체라고 하면 객체의 자료형이라고 하면 인지저가 있을 수 있고

06:35:02

string이 있고 그 다음에 string도 있고 list 다양한 자료용이 있었죠 그것에 묶여 있는 함수들 그러니까 인지점을 하기 위한 함수가 있고 그 다음에 뭐 그 뭐냐 list 아니면 string을 어떻게 조작하기 위한 함수가 있고 그러한 객체 자료용의 합격력이

06:35:33

함께 다니는 함수를 우리는 메소드라고 하고 메소드는 별도의 입자를 받지 않아도 객체값에 접근을 할 수가 있다 이것도 뒤에서 예시를 보면서 설명을 드릴게요 그래서 객체 자료용에 대한 연산, 인치저에 대한 연산은 내부적으로 그 연산저에 대한 메소드로 구현이 되어 있고요 이거 말로 하면 되게 어렵습니다 제가 이제 뒤에서 예시로 다 설명드리도록 하겠습니다

06:36:07

그리고 객체의 자료형에 대한 메소드는 연산자의 개수보다 더 많다. 메소드보다 메소드를 이용해서 뭔가 연산을 하니까 메소드는 연산자의 개수보다 당연히 많을 수밖에 없겠죠. 그래서 메소드는 점으로 시작을 합니다. 그래서 점 연산자는 객체의 속성이나 메소드에 접근을 할 때 사용이 되고요.

06:36:38

그 다음에 점 연산자는 모듈 또는 패키지 내부에 접근할 때도 사용할 수가 있다. 그래서 이런 겁니다. 그러니까 우리가 객체를 뭐 ABC라는 스트링 객체를 선언을 하고 그러면 그거에 S를 했고 그 다음에 우리가 S점을 하는 순간 어떤 메소드를 호출을 하는 겁니다. 그러니까 기존에는 우리가 함수를 type하고 S 이런 식으로 해줬는데 그게 아니라 이거는 이제 객체에 종속되어 있는 함수다 보니까

06:37:15

그 객체의 upper라는 메소드를 사용을 할 거고 여기에 인자가 들어가는 경우도 있는데 안 써도 우리는 이것이 결국에 s라는 object 이 object에는 value가 있죠 그 value를 그대로 사용을 할 수가 있다 따로 선언을 해주지 않아도 된다 그래서 문자열과 관련된 다양한 메소드가 있습니다 그래서 다양한 메소드들이 이런 식으로 있고 오늘은 그냥 여기 컨셉만 얘기하고 다음 시간에

06:37:51

복습을 하면서 실질적으로 이것들을 다 한번 해보는 시간을 가지도록 하겠습니다 그래서 의미도 그냥 한번씩 쭉 읽어보시면 됩니다 그 다음에 이제 포맷팅이라는 개념이 있는데 포맷팅 같은 경우에는 우리가 문자열을 어떤 값을 삽입할 수 있는 그러니까 우리가 프린트를 할 때 예를 들어서 이런 식으로 현재 온도를

06:38:23

이제 바꾸고 싶은데 이걸 문자열이 아니라 우리가 여기 어떤 계산 결과 값을 넣고 싶을 때도 있습니다 그럴 때는 이제 formatting을 사용을 한다 그래서 formatting이라는 것은 이런 식으로 우리가 formatting 이라는 걸 쓰고 그것에 어떤 값을 넣을지 안에 넣어주면 이제 되는데 그러면은 우리가 이제 print 어떤 문자열을 만들려고 하는데 그 문자열을 출력을 하려고 하는데

06:38:56

그 안에 이런 식으로 중, bar, 를 넣어 놓으면 여기에 뭔가 변수를 넣을 거다. 우리가 배리어블을 넣을 건데 그 배리어블들을 이 포맷팅으로 정의를 해서 이런 식으로 넣어준다. 그러면 여기서 이제 여기서도 그냥 문자열을 넣긴 했는데 나중에 여기서 계산 결과를 넣을 수도 있고요. 숫자 인지저 타입을 넣어줄 수도 있고 다양한 걸 할 수 있습니다. 지금 설명하는 내용