파이썬

클래스 다시 공부하기 1. 전역변수와 지역변수

Mara7 2023. 1. 22.
반응형
LIST
def scope_test():
    def do_local(): # 지역 변수 -> local spam
        spam = "local spam"
    def do_nonlocal(): # nonlocal 변수 ->nonlocal spam
        nonlocal spam
        spam = "nonlocal spam"
    def do_globa(): # global 변수 -> global
        global spam
        spam = "global spam"
    spam = "test spam"
    do_local()
    print("After local assignment:",spam)
    do_nonlocal() #nonlocal 함수 : 전역제외, 가까이 있는 함수들을 둘러싸서 적용할 수 있도록함
    print("After nonlocal assignment:",spam)
    do_globa()
    print("After global assignment:",spam)
scope_test()
print("In global scope:",spam)# global 함수 -> 현재 블록 전체에 적용되는 선

전역 변수 만들기

def d_is_10():
        d = 10
        print('d 값은 ',d,'입니다')
d_is_10()
d
Traceback (most recent call last):
  File "/Users//PycharmProjects/untitled3/test.py", line 6, in <module>
    d
NameError: name 'd' is not defined

# NameError생기는 이유 : 함수 실행 이후에 d가 함께 사라졌기 때문에, 에러 발생, but 전역 변수는 함수 안에서도 얼마든지 사용할 수 있음

 

x를 전역 함수로 사용하기

x = 10
def printx():
        print(x)
printx()

오류 없이 결과가 출력되지만, 전역 변수 사용시 변수값이 바뀔 수도 있기 때문에 적절히 섞어서 쓰는 것이 중요함

 

함수 안에서 전역변수 만들기

def e_is_10():
        global e
        e = 10
        print('e 값은 ',e,'입니다.')
e_is_10()
print(e)

함수가 끝나도, 값이 사라지지 않음

반응형
LIST

댓글