반응형
- 전역 변수, 전역 범위
>>> x = 100
>>> def foo():
print(x)
>>> foo()
100
>>> print(x)
100
위에서 함수 바깥에서 만들어진 변수 x는 함수를 포함한 스크립트 전체에서 접근할 수 있는 변수인 전역변수입니다. 이 전역변수에 접근할 수 있는 모든 범위를 전역 범위라고 합니다.
- 지역 변수, 지역 범위
>>> def foo():
x = 100
print(x)
>>> foo()
100
>>> print(x)
Traceback (most recent call last):
File "<pyshell#5>", line 1, in <module>
print(x)
NameError: name 'x' is not defined
함수 안에서 만들어진 변수 x는 함수 안에서만 접근할 수 있는 지역변수입니다. 지역변수는 함수안에서만 적용되기 때문에 함수 밖에서 변수 x는 정의되지 않습니다. 이 지역변수가 적용되는 범위가 지역범위입니다. 위에서는 지역변수가 만들어진 함수 foo() 안의 범위가 지역범위입니다.
>>> x = 100
>>> def foo():
x = 10
print(x)
>>> foo()
10
>>> print(x)
100
위에서 함수 밖에서 정의된 전역변수 x = 100, 함수 안에서 정의된 지역변수 x = 10가 있습니다. 둘은 같은 이름인 변수 x지만 서로 다른 변수입니다. 여기서 함수 foo()를 불러오면 foo() 안에서 만들어진 10이 결과로 나오고, 함수 밖에서 x를 불러오면 전역변수 100이 출력됩니다.
- global 전역변수
>>> x = 100
>>> def foo():
global x
x = 10
print(x)
>>> foo()
10
>>> print(x)
10
global 변수를 사용하면 전역변수를 만들겠다고 선언하는 것이므로 global x 다음에 선언한 x = 10가 전역변수가 됩니다.
- 중첩함수(Nested function), 내부 함수(Inner function) : 함수 안에 함수 사용
>>> def my_name():
name = '홍길동'
def print_name():
print(name)
print_name()
>>> my_name()
홍길동
>>> def A():
x = 10
def B():
x = 20
B()
print(x)
>>> A()
10
함수 A() 안에 또 다른 함수 B()를 정의했습니다. 함수 B안에서 print(x)를 하면 A의 지역변수 10이 결과로 나오게 됩니다.
- nonlocal 지역변수
>>> def A():
x = 10
def B():
nonlocal x
x = 20
B()
print(x)
>>> A()
20
nonlocal 지역변수를 사용하면 지역변수가 변경됩니다.
반응형
'Python' 카테고리의 다른 글
[Python] 클래스(class) 사용하기 (0) | 2021.05.21 |
---|---|
[Python] 클래스(class)와 객체(object) (0) | 2021.05.17 |
[Python] 포매팅을 이용해 숫자 자리 개수 맞추기 (0) | 2021.05.03 |
[Python] 문자열 포매팅, % (0) | 2021.05.03 |
[Python] 람다표현식 (0) | 2021.04.28 |