2. 변수
azuremei
목차
[숨기기]변수
- 값을 저장하는 공간
- 파이썬에서의 변수는 '객체'를 가리킨다.
- 가리키는 형태
- 순차대입
변수의 값 대입
기본
- '='를 사용하여 객체를 가리키는 것을 변수라고 한다.
- 변수=변수값 : 변수에 변수값을 대입한다.
- 프로그래밍 언어에서 =은 좌측에 있는 값을 우측에 대입하는 것이다.
- 변수를 지정하기만 하는 것은 출력값에 영향을 미치지 않는다.
- 파이썬 외의 다른 언어에서는 A라는 공간을 만들고 공간 안에 변수를 저장하는 형태, 그러나 파이썬은 만들어진 공간을 '가리키기만 하는'것이므로 다른 장치 없이 사용 가능함
입력창 | 결과창 |
---|---|
a=1 b=2 c=3 print(a, b, c) |
1 2 3 |
a=1 b=2 c=3 d=1 print(a, b, c) |
1 2 3 |
- 만약 d=1이라는 중복값이 있더라도 파이썬에서의 변수는 가리키기만 하는 것이므로 오류가 나지 않는다.
※이전에 지정한 변수와 같은 변수(변수값X)을 중복 사용하면 이전 변수와의 연결고리는 끊어지고 새 변수로 변경된다. 그러나 파이썬은 순차 연산언어기 때문에 이전의 값이 사라지지는 않는다.
입력창 | 결과창 |
---|---|
a=1 b=2 c=3 print(a, b, c) . . . . a=4 b=5 c=5 print(a, b, c) |
1 2 3 . . . . . . . . 4 5 6 |
한 번에 대입하기
- 변수값을 한번에 대입하는 방법은 두 가지이다.
- 변수1, 변수2, 변수3=변수값1, 변수값2, 변수값3
- 변수1=변수값1; 변수2=변수값2; 변수3=변수값3
입력창 | 결과창 |
---|---|
a, b, c = 1, 2, 3 print(a, b, c) |
1 2 3 |
a=1; b=2; c=3 print(a, b, c) |
1 2 3 |
모두 같은 값인 변수의 대입
- 변수 1,2,3의 값이 모두 같을 때 변수1=변수2=변수3=변수값1과 같이 사용한다.
입력창 | 결과창 |
---|---|
a=b=c=7 print(a, b, c) |
7 7 7 |
변수값 변경
- 두 개의 변수값을 바꾸고 싶을 경우 일반적인 프로그래밍 언어에서는 제 3의 임시변수를 만들어 변수값을 옮긴 후 비어있는 나머지 변수값에 1번 변수값을 옮기는 방식을 사용한다.
- 그러나 파이썬에서는 '='로 변수값을 바꿔줄 수 있으며 이는 파이썬의 강력한 기능이다.
입력창 | 결과창 |
---|---|
a=1 b=2 a, b=b, a print(a, b) |
2 1 |
a=1 b=2 a, b=2, 1 print(a, b) |
2 1 |
※이는 위에 언급한 변수를 중복사용하면 이전 변수와의 연결고리가 끊어지고 새 변수로 변경되는 원리 덕에 가능한 것이다.
변수가 값을 가리킨다?
입력창 | 결과창 |
---|---|
a=1 print(id(1)) print(id(a)) b=a print(id(b)) d=4 print(id(4)) |
1785975856 1785975856 1785975856 135072292 |
- id(object)는 객체를 입력받아 객체의 고유 주소값(레퍼런스)을 리턴하는 함수이다.
- 위 예의 3, a, b는 고유 주소값이 모두 135072304이다. 즉, 3, a, b가 모두 같은 객체를 가리키고 있음을 알 수 있다. 만약 id(4)라고 입력하면 4는 3, a, b와 다른 객체이므로 당연히 다른 고유 주소값이 출력된다.
- 그러므로 변수가 가르키는 것은 변수값임을 알 수 있다
변수 삭제
- del(변수)를 사용해 변수를 삭제
- 변수를 변경하는 것과는 차이가 있다. 변수를 변경하면 변경 전까지의 변수를 컴퓨터가 인식할 수 있다. 그러므로 입력창에 이전 변수 a와 변경된 변수 a가 있더라도 이전값과 변경값이 출력된다. 그러나 변수를 삭제하면 값 자체가 삭제되므로 프로그램이 이전의 변수를 인식하지 못한다. (2주차에서 참조하여 다시 정리하기)
변수 삭제
- del(변수)를 사용해 변수를 삭제
- 변수를 변경하는 것과는 차이가 있다. 변수를 변경하면 변경 전까지의 변수를 컴퓨터가 인식할 수 있다. 그러므로 입력창에 이전 변수 a와 변경된 변수 a가 있더라도 이전값과 변경값이 출력된다. 그러나 변수를 삭제하면 값 자체가 삭제되므로 프로그램이 이전의 변수를 인식하지 못한다. (2주차에서 참조하여 다시 정리하기)