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