파이썬에서 `global`과 `nonlocal`은 변수의 스코프와 관련된 키워드입니다. 다음은 각각의 사용법을 설명합니다:
global 키워드
- global 키워드는 함수 내에서 전역 변수를 사용하고자 할 때 사용
- 함수 내부에서 전역 변수를 사용하려면 `global` 키워드를 사용하여 변수를 전역 변수로 선언하며, 이를 통해 함수 내에서 전역 변수의 값을 읽고 수정할 수 있습니다.
- global 키워드는 변수가 함수 외부에서 정의되었음을 나타냅니다.
count = 0
def increment():
global count
count += 1
print(count) # 출력: 0
increment()
print(count) # 출력: 1
count 변수는 함수 외부에서 정의되었으며 함수 내부에서 사용하고자 할 때 `global` 키워드를 사용
nonlocal 키워드
- nonlocal 키워드는 중첩 함수에서 외부 함수의 변수를 사용하고자 할 때 사용됩니다.
- 중첩 함수 내부에서 외부 함수의 변수를 읽거나 수정하려면 `nonlocal` 키워드를 사용하여 변수를 nonlocal 변수로 선언해야 합니다.
- 이를 통해 중첩 함수에서 외부 함수의 변수에 접근할 수 있습니다.
- nonlocal 키워드는 변수가 가장 가까운 외부 함수에 정의되었음을 나타냅니다.
def outer():
x = 1
def inner():
nonlocal x
x += 1
print(x) # 출력: 2
inner()
outer()
`x` 변수는 `outer` 함수에 정의되었고 `inner` 함수에서 사용하고자 할 때 `nonlocal` 키워드를 사용
global과 nonlocal 키워드를 사용할 때에는 주의해야 합니다. 이러한 키워드를 남발하면 코드의 가독성을 저하시킬 수 있고, 변수의 스코프와 관련된 오류를 발생시킬 수 있습니다. 따라서 전역 변수와 중첩 함수의 변수 사용은 필요한 경우에만 사용하는 것이 좋습니다.
'programming > python' 카테고리의 다른 글
[PY] 캡슐화 (encapsulation) - @property (0) | 2022.11.27 |
---|---|
[PY] 객체지향 - 상속 (inheritance) (0) | 2022.11.24 |
[PY] 파이썬 진수 변환 (0) | 2022.11.22 |
[PY] 머신러닝과 부동소수점 (0) | 2022.11.21 |
[PY] 동시성 (멀티스레딩, 멀티프로세싱) (0) | 2022.11.09 |
댓글