"2. 변수"의 두 판 사이의 차이

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

2018년 3월 22일 (목) 00:04 기준 최신판

변수

  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주차에서 참조하여 다시 정리하기)