관리 메뉴

사적공간

스코프 / 기본매개변수 / 가변매개변수 본문

KNOU_CS/파이썬

스코프 / 기본매개변수 / 가변매개변수

2sac 2024. 3. 22. 15:43

스코프

함수 내외부 변수의 이름을 달리해, 스코프가 다른데, 변수의 이름이 같아서 혼동하는 경우를 피해야 함. 

x = 1 
print("1. x의 값은", x)

def inc(x):
    x = x + 1  ## inc 바깥에 있는 x와 안에 있는 x의 스코프는 다름. 
    print("2. x의 값은", x) ## inc()함수는 끝나면 호출스택에서 함수가 인출되면서 기억공간에서 inc()안 x는 사라짐.

inc(x)
print("3. x의 값은", x )

1. x의 값은 1

2. x의 값은 2

3. x의 값은 1

 

 

전역변수 / 지역변수 

x는 전역변수로 구문 전체가 범위이며, y는 지역변수로 함수 안까지가 범위(스코프). 범위를 벗어난 두 번째 프린트문에서 에러를 확인할 수 있다. 

 

기본매개변수 

# 원뿔 계산 함수 정의
def prt_cone_vol_surf(r=10, h=20) : ## 일반매개변수는 기본값이 없는 매개변수고, 기본매개변수는 값이 있는 매개변수
    if r > 0 and h > 0 : ## 기본매개변수는 일반매개변수 뒤에 있어야 함. 
        # r, h 모두 양수일 때
        return 1/3 * 3.14 * r ** 2 * h, 3.14 * r ** 2 + 3.14 * r * h ## 리턴문에 바로 수식 작성 
    else :
        # r, h가 음수일 때
        print("반지름과 높이 값에 양수를 입력하세요")

vol1, surf1 = prt_cone_vol_surf() ## 실매개변수 없이 함수에 정의된 기본매개변수로 함수실행 
print(vol1)
print(surf1)

2093.333333333333

942.0

 


가변매개변수

def var_sum_avg(*numbers): ## 시퀸스로 값을 받음.이러한 매개변수를 가변매개변수라고 함. 일반매개변수 뒤에 있어야 함. 
    sum = 0
    count = 0

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

    return sum, sum/count ## 합과 평균을 리턴함. 

print(var_sum_avg(10,20,30,40)) ## ()안에 값들을 함수의 가변매개변수에 던져줌.

(100, 25.0)