ㅇㅇ ·
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>
#함수 실행 => 함수 불러오기<br>
class_hello(8)<br>
<br>
[/code]