"프로그래밍 언어의 개념과 흐름에 대한 고찰 - 파이썬답게 코딩하기" 학습중...
변수와 관련하여 어렴풋이 알던 내용들 몇가지 정리해봅니다.
#!/usr/bin/python3
## 함수안에 함수 -> nested function
# def greeting(name) :
# greeting_msg = "Hello "
#
# def add_name() : ## nested function
# return ("%s%s" % (greeting_msg, name))
#
# msg = add_name()
# print(msg)
#
# if __name__ == "__main__" :
# greeting("python")
nonlocal variable
# def greeting(name) :
# greeting_msg = "Hello"
#
# def add_name() : ## nested function
# greeting_msg += " " ## greeting_msg가 greeting() 함수에는 선언되어 있으나 add_name()함수에는 선언되지 않아 오류 발생
# ## 이 경우 greeting_msg를 "nonlocal greeting_msg"라고 선언해준다.
# return ("%s%s" % (greeting_msg, name))
#
# msg = add_name()
# print(msg)
#
# if __name__ == "__main__" :
# greeting("python")
#
#
# def greeting(name):
# greeting_msg = "Hello"
#
# def add_name(): ## nested function
# nonlocal greeting_msg
# greeting_msg += " " ## greeting_msg가 greeting() 함수에는 선언되어 있으나 add_name()함수에는 선언되지 않아 오류 발생
# ## 이 경우 greeting_msg를 "nonlocal greeting_msg"라고 선언해준다. free variable 이라고도 합니다.
# return ("%s%s" % (greeting_msg, name))
#
# msg = add_name()
# print(msg)
#
# if __name__ == "__main__":
# greeting("python")
variable shadowing
# var_shadowing = "global"
#
# def outer_function() :
# var_shadowing = "outer"
# def inner_function() :
# var_shadowing = "inner"
# print("inner_function scope : %s" % var_shadowing)
#
# inner_function()
# print("outer_function scope : %s" % var_shadowing)
#
# if __name__ =="__main__" :
# outer_function()
# print("global scope : %s" % var_shadowing)
## 아래와 같이 출력 함수 위치에 따라 동일한 변수명에 적절히 분배되어 실행됨. 이처럼 같은 이름의 변수가 네임스페이스로 인해
## 가려지는 것을 variable shadowing이라고 합니다.
# inner_function scope : inner
# outer_function scope : outer
# global scope : global
'파이썬(PYTHON)' 카테고리의 다른 글
파이썬의 함수2 (0) | 2020.08.20 |
---|---|
파이썬의 함수1 (0) | 2020.08.19 |
openpyxl 모듈 활용 연습3 (0) | 2020.08.16 |
openpyxl 모듈 활용 연습2 (0) | 2020.08.16 |
openpyxl 모듈 활용 연습1 (0) | 2020.08.16 |