글 수정

작성자 본인만 수정할 수 있습니다

← 홈으로
ㅇㅇ · 2024.09.10 · 조회 3,183
24.09.10 센텀고 정보 수업 함수에 대하여
[code]<br> #입력 인수 있고, return 값도 있을 때 // 함수 생성<br> <br> def add(a,b):<br> c = a+b<br> return c<br> <br> <br> #함수를 사용하는 방법 : 함수의 이름을 부름<br> <br> result = add(20,10)<br> print(result)<br> [/code]<br> <br> 파이썬에서 함수의 작동 방식과 변수의 범위(scope)에 대한 설명. <br> <br> 상황 설명<br> 주어진 코드에서 두 개의 함수 `add`와 `sub`가 정의되어 있는데, <br> 이 함수들은 각각 두 개의 입력 인수를 받아서 더하거나 빼는 작업을 수행하고, 그 결과를 반환한다. <br> <br> [code]<br> def add(a, b):<br> c = a + b<br> return c<br> <br> def sub(a, b):<br> c = a - b<br> return c<br> [/code]<br> <br> 이후, 이 함수들을 호출하여 결과를 출력하는 코드가 있습니다:<br> <br> [code]<br> result = add(20, 10)<br> print(result) # 30이 출력됨<br> result = sub(20, 10)<br> print(result) # 10이 출력됨<br> [/code]<br> 원인 분석<br> 이제 `print(c)`를 호출했을 때 왜 오류가 발생하는지 확인:<br> <br> 1.지역 변수의 개념: <br> - `c`는 `add`와 `sub` 함수 내에서 정의된 지역 변수입니다. 즉, `c`는 각 함수가 실행되는 동안에만 존재하며, 함수가 종료되면 사라집니다.<br> - 함수 외부에서는 `c`라는 변수를 인식할 수 없습니다. 따라서 `print(c)`를 호출하면 `NameError`가 발생합니다. <br> 이는 `c`라는 이름의 변수가 정의되지 않았기 때문입니다.<br> <br> 2. 함수의 반환값:<br> - 함수는 `return` 문을 통해 값을 반환할 수 있습니다. `add` 함수는 `c`를 반환하고, `sub` 함수도 `c`를 반환,<br> 이 반환된 값은 함수 호출 시 사용자가 지정한 변수에 저장할 수 있다.<br> - 예를 들어, `result = add(20, 10)`에서 `add` 함수의 결과(즉, `c`의 값인 30)가 `result` 변수에 저장됨.<br> <br> 결과 추론<br> 따라서, `print(c)`를 호출하면 `c`가 정의되지 않았기 때문에 오류가 발생합니다. 이는 파이썬의 변수 범위 규칙에 따른 것입니다. <br> <br> 해결 방안<br> 이 문제를 해결하기 위해서는 다음과 같은 방법을 사용할 수 있습니다:<br> <br> 1. 함수의 반환값을 사용하기:<br> - 함수가 반환하는 값을 변수에 저장하고, 그 변수를 출력함<br> 예를 들어, `result` 변수를 사용하여 `add`와 `sub`의 결과를 출력하는 방식<br> <br> [code]<br> result = add(20, 10)<br> print(result) # 30 출력<br> <br> result = sub(20, 10)<br> print(result) # 10 출력<br> [/code]<br> <br> 2. 함수 내에서 직접 출력하기:<br> - 만약 함수 내에서 `c`의 값을 출력하고 싶다면, `print(c)`를 함수 내부에 추가할 수 있습니다. 그러나 이 경우 함수의 반환값을 사용할 수 없게 됩니다.<br> <br> [code]<br> def add(a, b):<br> c = a + b<br> print(c) # 여기서 c를 출력<br> return c<br> <br> add(20, 10) # 30이 출력됨<br> [/code]<br> <br> 이렇게 하면 `c`의 값을 출력할 수 있지만, 함수의 반환값을 활용하는 것이 더 일반적이고 유용한 방법입니다. <br> <br> 결론적으로, 함수의 지역 변수는 함수 외부에서 접근할 수 없기 때문에, 함수의 반환값을 활용하여 결과를 출력하는 것이 바람직하다.<br> <br> 수업 시간 중 과제:<br> [code]<br> #입력 인수 있고, return 값도 있을 때 // 함수 생성<br> <br> def add(a,b):<br> c = a+b<br> return c<br> <br> def sub(a,b):<br> c = a-b<br> return c<br> <br> def mul(a,b):<br> c = a*b<br> return c<br> <br> def div(a,b):<br> c = a/b<br> return c<br> <br> <br> #함수를 사용하는 방법 : 함수의 이름을 부름<br> <br> result = add(20,10)<br> print(result)<br> result = sub(20,10)<br> print(result)<br> result = mul(20,10)<br> print(result)<br> result = div(20,10)<br> print(result)<br> [/code]<br> <br> <br> 입력 인수 있고, return 값도 없을 때:<br> <br> [code]<br> #입력 인수 있고, return 값도 없을 때 // 함수 생성<br> <br> def class_hello(a):<br> print(a, "hello")<br> <br> <br> #함수 실행 =&gt; 함수 불러오기<br> class_hello(8)<br> <br> [/code]