본문 바로가기
방통대/파이썬

[파이썬] 9-2 함수의 확장

by 꿈꾸는 몽나 2024. 4. 18.
728x90

값의 전달

: 함수가 호출될 때, 값이 형식 매개변수에 전달. (변수가 전달되는 게 아님)

 

 

-전달 순서

프로그램 공간 x의 1이라는 값을 inc 함수 공간 x에게 전달한다. 

x + 1로 x의 값은 2가 된다.

그 다음 다시 원래 프로그램 공간으로 들어와 원래 x의 값이었던 1이 출력된다.

 

 

예시)

 

출력 : 10, 50

 

 

 

 

변수의 스코프

: 프로그램에서 변수가 참조될 수 있는 영역

-전역변수 : 프로그램 전체 영역에서 접근

-지역변수 : 선언된 함수 내부에서만 접근

 

출력 : x의 값은 1, y의 값은 2

 

풀이 :

y = x + 1에서 오류가 날 것이라고 생각할수도 있지만, 오류는 발생하지 않는다.

원래 프로그램 가장 베이스가 되는 프로그램에서의 변수는 그 내부에서 호출되는 모든 함수가 그 변수의 값을 들여다볼 수 있다.

 

X의 값을 1로 끄집어내다가 안에 집어넣을 순 없지만 

안에 실행할 때 이 변수의 이름, 변수의 값을 실제 볼 수가 있다

 

그래서 x 값에 1을 가지고 와서 1 + 1의 값이 y에 저장된다.

 

즉, x는 함수 외부에서 생성된 변수는 내부에서 불려진 함수 전체에 접근할 수 있는 전역변수이다.

y는 inc1 함수 내부에서만 사용 가능하기 때문에 지역변수이다.

 

 

 

 

기본 매개변수

: 함수 호출 시 매개변수가 전달되지 않을 경우 기본값이 전달되는 매개변수

 

 

 

기본 매개변수의 정의

-구문형식

def 함수이름(매개변수 리스트, 매개변수=값 리스트):
    명령 블록
    return 반환값 리스트

: 일반 매개변수 앞에 위치할 수 없음

 

 

 

가변 매개변수

-구문형식

def 함수이름(매개변수 리스트, *가변 매개변수):
    명령 블록
    return 반환값 리스트

: 일반 매개변수 앞에 위치할 수 없음

: 가변 매개변수는 1개만 사용 가능

*리스트의 형태로 전달된다 -> for문 사용

 

 

 

 

예시)

def prt_cone_vol(r, h) :
    if r > 0 and h > 0 :
        # r, h 모두 양수일 때
        vol = 1/3 * 3.14 * r ** 2 * h
        r, h = 0, 0
        return vol
    else :
        # r, h가 음수일 때
        print("반지름과 높이 값에 양수를 입력하세요.")
        
r = 50
h = 100
print(format(prt_cone_vol(r, h), ">10.3f"))
print("함수사용후", r, h)

: 함수 내부에서의 변수와 함수 외부에서의 변수는 다르다.

 

 

 

예시2)

x = 1
print("1. x의 값은", x)   #1번 라인에 의해 1 출력

def inc(x) :
    x = x + 1
    print("2. x의 값은", x)   #5번 라인에 의해 2 출력
    
inc(x)
print("3. x의 값은", x)   #1 출력

 

 

 

 

예시3)

단위 원뿔(반지름 20, 높이 30)의 부피와 겉넓이를 출력하려면?

#원뿔 계산 함수 정의
def prt_cone_vol(r = 20, h = 30) :   #함수 정의부분에 기본값 지정하는 방법. 매개변수=기본값
    if r > 0 and h > 0 :
        # r, h 모두 양수일 때
        return 1/3 * 3.14 * r ** 2 * h   #변수를 만들지 않고 계산 식을 직접 반환해보는 중
    else :
        # r, h가 음수일 때
        print("반지름과 높이 값에 양수를 입력하세요.")
        
print(prt_cone_vol())

: 매개변수를 입력하지 않으면 기본값이 적용되는 프로그램

: 함수 매개변수에 기본값을 지정해줬기 때문에 에러가 나지 않는다.

 

 

 

예시4)

여러개의 수를 입력받고 합과 평균을 반환하는 var_sum_avg 함수를 사용하여, (20, 25, 10, 85, 100, 150)에 대한 합과 평균을 출력하는 프로그램을 작성하시오.

def var_sum_avg(*numbers) :
    sum = 0
    count = 0   #파라미터의 개수를 알아내기 위한 count 변수 추가

    for i in numbers :
        sum = sum + i
        count = count + 1

    return sum, sum/count
    
print(var_sum_avg(20, 25, 10, 85, 100, 150))

: 파라미터의 개수가 가변적인 형태의 함수

: 파라미터로 넘어오는 값들은 시퀀스 형태로 전달 -> 반복이 사용됨

: 입력값의 개수가 달라지는 환경에서도 정상적으로 동작하는 프로그램

 

 

728x90

'방통대 > 파이썬' 카테고리의 다른 글

[파이썬] 10-1 객체지향  (2) 2024.04.25
[파이썬] 9강. 함수 연습 문제  (0) 2024.04.18
[파이썬] 9-1 함수  (2) 2024.04.18
[파이썬] 8강. 체크포인트 연습 문제  (0) 2024.04.11
[파이썬] 8강. 체크포인트  (2) 2024.04.11