-
파이썬 - 변수, 로컬/글로벌 개념파이썬 2017. 11. 29. 15:19
https://programmers.co.kr/learn/questions/543
1. 변수 생성
우선 변수 생성에 관해서 답변드리자면, 파이썬에서의 변수가 생성되는 시점은 해당 변수에 어떠한 값이 할당 되었을 때 입니다.
a = 1
문장이 있으면 이 문장이 실행된 순간 1 이 할당된 변수a
가 생성 됩니다.
같은 의미로r1 = (-b + (b ** 2 - 4 * a * c) ** 0.5) / (2 * a)
이 문장이 실행된 순간 변수r1
이 생성 되는 것 입니다.2. 변수 범위
파이썬에서의 범수 범위는 c언어나 java와 다른 점이 있습니다.
변수를 찾을 때 우선 함수 내부를 찾고 그 이후 함수 외부를 찾습니다.
다르게 말하자면 지역(Local) 변수를 확인한 후 전역(Global) 변수를 확인한다는 것입니다.예를들어
def print_add(): a = 10 r = a + b print('결과는 {}'.format(r)) a = 1 b = 2 print_add()
이 경우
r = a + b
에서a
는a = 10
코드가 지역변수 범위에 있기때문에 함수 외부의a = 1
의a
가 아닌, 함수 내부의a = 10
의a
를 가리킵니다.b
는 함수 내부(Local)에b
가 선언 되어있지 않아서 전역변수(Global)인b = 2
를 가리킵니다.
만약 코드에b = 2
가 존재하지 않는다면 변수b
에 할당된 값이 없기 때문에 에러가 발생합니다.함수 외부에 선언된 변수는 함수 내부에서 사용 가능하지만, 그 반대는 불가능 합니다.
def print_add(): a = 10 r = a + b print('결과는 {}'.format(r)) b = 2 print(a) '''에러 발생'''
함수 내부의
r = a + b
의a
는 함수 내부의 10을 가리키지만, 함수 외부의print(a)
는 함수 내부의a = 10
을 가리킬 수 없기때문에 에러가 발생합니다.매개변수와 함수 안에서 생성한 변수 이름이 중복된 경우
def print_add(a): a = 10 r = a + b print('결과는 {}'.format(r)) a = 1 b = 2 print_add(a)
이 경우 함수내부의 변수
a
는 새로 변수를 생성한 것이 아니라 매개변수a
의 값을 1에서 10으로 바꾸는 의미가 됩니다.
c언어와 java처럼int a = 1;
과 같이 선언 방법이 따로 없기 때문에, 코드가 변수를 생성하는 의미인지, 생성된 변수에 값을 바꾸는 의미인지 잘 파악해야 합니다.'파이썬' 카테고리의 다른 글
파이썬 - 패킹, 언패킹/ 함수의 튜플,딕셔너리 (0) 2017.11.29 파이썬 - 함수(def)의 매개변수(parameter), 실행인자(argument) (0) 2017.11.29 파이썬 - 딕셔너리 (0) 2017.11.28 파이썬 - 리스트, 튜플, 세트 (0) 2017.11.27 파이썬 - 포맷팅 예시 (0) 2017.11.26