2. 변수

azuremei
이동: 둘러보기, 검색

변수

  1. 값을 저장하는 공간
  2. 파이썬에서의 변수는 '객체'를 가리킨다.
  3. 가리키는 형태
  4. 순차대입

변수의 값 대입

기본

  • '='를 사용하여 객체를 가리키는 것변수라고 한다.
  • 변수=변수값 : 변수에 변수값을 대입한다.
  • 프로그래밍 언어에서 =은 좌측에 있는 값을 우측에 대입하는 것이다.
  • 변수를 지정하기만 하는 것은 출력값에 영향을 미치지 않는다.
    • 파이썬 외의 다른 언어에서는 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. 변수1, 변수2, 변수3=변수값1, 변수값2, 변수값3
    2. 변수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주차에서 참조하여 다시 정리하기)