서버 점검 안내

dsclub은 서비스의 안정성과 성능 향상을 위해
매일 04시 30분에 정기 점검이 진행됩니다.

점검 시간: 오전 4시 30분 ~ 4시 35분

해당 시간 동안 일시적으로 서비스에 접속이 불가능하오니, 양해 부탁드립니다.

24.09.10 센텀고 정보 함수 > 코딩 스토리

24.09.10 센텀고 정보 함수

페이지 정보

작성자  (211.♡.168.221) 작성일 24-09-10 13:55 조회 473 댓글 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]
좋아요5 이 글을 좋아요하셨습니다
url 복사 카카오톡 공유 라인 공유 페이스북 공유 트위터 공유

탁게이님의 댓글

탁게이 아이피 (211.♡.168.221) 작성일

앙 오빠 나이따

전체 269건
게시물 검색

접속자집계

오늘
360
어제
1,445
최대
4,271
전체
291,270