python

예제로 공부하는 파이썬_Python_기초_변수

km1n 2022. 1. 18. 18:10

1. 변수란? 변하는 수.

코드를 작성하는 과정에서 여러 유형의 데이터 값을 많이 사용하게 되는데 이때 데이터 값을 담는 바구니를 변수라고 한다. 요리에 비유하면 각종 양념을 담는 양념통을 변수라고 한다.

 

2. 변수의 역할은 무엇인가?

양념통이 있으면 양념통이 없을 때보다 효율적으로 요리할 수 있듯, 프로그래밍 코딩시 변수를 적절히 사용함으로써 코딩을 보다 효율적으로 더 빨리 짤 수 있게 된다.

이렇듯, 변수의 존재는 프로그램 코드 작성시 여러 가지 다양한 데이터 값을 효율적으로 저장하고 관리하기 위한 용도로 사용된다. 즉, 데이터 값을 담는 바구니 또는 그릇이라고 생각하면 된다. 

 

3. 상수란? 변하지 않는 수.

코드를 작성하는 과정에서 오직 하나의 데이터 값을 많이 사용하는데, 이런 데이터 값을 담는 바구니를 상수라고 한다.

 

정리하자면, 프로그램 실행 도중에 데이터 값이 바뀌지 않고 항상 고정된 값 그대로 유지되는 것이 상수이다. 

즉, 사용자가 임의로 바꾸거나 변경할 수 없는 사전에 미리 정의된 값을 가지는 것을 상수하고 한다. 

숫자 상수, 문자 상수 등이 있다.

 

4. 변수 선언 및 변수 값 할당

파이썬은 변수를 선언시 메모리 공간을 예약하기 위해서 명시적으로 선언을 할 필요가 없다.

따라서, 바로 변수명을 적어주고 값을 할당하면 자동으로 변수 선언 및 변수 값 할당이 이뤄지게 된다.

이때, =기호를 사용하는데 이건 '같다'는 의미가 아닌 '할당'의 의미이다. '대입'한다고도 생각해볼 수 있다. 

 

5. 다중할당

파이썬은 기본적으로 하나의 값을 여러 개의 변수에 할당하여 저장시킬 수 있다.

 

예시>

 a = b = c = d = e = 100, 200
print( '[ 결과 출력 ]' )
print( 'a, b, c, d, e 변수의 값은? ', a, b, c, d, e )
[ 결과 출력 ]
a, b, c, d, e 변수의 값은?  (100, 200) (100, 200) (100, 200) (100, 200) (100, 200)

 

6. 쌍따옴표, 홑따옴표가 출력되는 코드

# [1]
sample_txt1 = '나는 엄마에게 말했다. "더 이상 카레는 먹기 싫어요!"라고..'
print( sample_txt1 )


# [2]
sample_txt2 = '나는 엄마에게 말했다. "더 이상 \'카레\'는 먹기 싫어요!"라고..'
print( sample_txt2 )


# [3]
sample_txt3 = "나는 엄마에게 말했다. \"더 이상 '카레'는 먹기 싫어요!\"라고.."
print( sample_txt3 )
나는 엄마에게 말했다. "더 이상 카레는 먹기 싫어요!"라고..
나는 엄마에게 말했다. "더 이상 '카레'는 먹기 싫어요!"라고..
나는 엄마에게 말했다. "더 이상 '카레'는 먹기 싫어요!"라고..

 

7. 아이디 연산자(Identity Operators)

 

is : 양쪽 Operand가 동일한 Object를 가리키는지 아닌지를 검사합니다.

is not : 양쪽 Operand가 다른 Object를 가리키는지 아닌지를 검사합니다.

  • 동일한 객체 여부를 판별하는 연산자.
  • id() 함수는 객체를 입력값으로 받아서 객체의 고유값(레퍼런스)을 반환하는 함수입니다.
  • id는 파이썬이 객체를 구별하기 위해서 부여하는 일련번호입니다. 숫자로서 의미는 없습니다.
  • id는 동일한 객체 여부를 판별할 때 사용합니다.

 

8. is 연산자

is 연산자는 == 연산자는 달리 들어있는 데이터 값을 비교하는게 아니라 같은 객체를 가리키는지를 비교한다.
그렇기때문에, 설령 같은 값을 가지고 있다 하더라도 각각 다르게 생성된 객체라면 is 연산자로 비교시 False 값을 출력받게 된다.

위 코드에서 c에 할당된 리스트 객체는 새롭게 메모리 공간을 할당받아 새롭게 생성된 객체이기 때문에 첫번째 리스트 객체와는 다르게 된다.

 

예>

# [1]
a = [ 1, 2, 3, 4, 5 ]
b = a
c = [ 1, 2, 3, 4, 5 ]


# [2] : 다음의 출력 결과를 말해보시오?
print( '[2-1] a is b = ', a is b, id(a), id(b) )  # True
print( '[2-2] a is c = ', a is c, id(a), id(c) )  # False
print( '[2-3] b is c = ', b is c, id(b), id(c) )  # False

 

정리 예제>

# 아래 코드의 is, == 연산자의 결과로 출력되는 값을 예상하여 말해보시오.
# 결과는 True, False 값으로 출력된다.


# [1] : 숫자
a = 101
b = 100 + 1
print( '[1-1] a is b = ', a is b )
print( '[1-2] a == b = ', a == b )


# [2] : 문자열
c = 'korea'
d = 'korea'
print( '[2-1] c is d = ', c is d )
print( '[2-2] c == d = ', c == d )


# [3] : 리스트
e = [ 1, 2, 3, 4, 5 ]
f = [ 1, 2, 3, 4, 5 ]
print( '[3-1] e is f = ', e is f )
print( '[3-2] e == f = ', e == f )
# 아래 코드의 is 연산자 결과 및 각각의 print 결과를 예상하여 말해보시오.


a = "korea"
print( '[1]', a, id(a) )

b = "korea"
print( '[2]', b, id(b) )
print( 'a is b = ', a is b )  #--- True --;;

b += "!"  #--- korea! --;;
print( '[3]', b, id(b) )
print( 'a is b = ', a is b )  #--- False --;;

# korea!
c = b[ :-1 ]
print( '[4]', c, id(c) )
print( 'a is c = ', a is c )  #--- False --;;
[1] korea 2190589287024

[2] korea 2190589287024
a is b =  True

[3] korea! 2190589269168
a is b =  False

[4] korea 2190589269040
a is c =  False

 

9. slice

# [1] : 문자열
t = "korea"

# [2] : 슬라이스 및 id() 출력
print( t, id(t), ' - ', t[:1], id(t[:1]), ' - ', t[:2], id(t[:2]), ' - ', t[:3], 
id(t[:3]), ' - ', t[:4], id(t[:4]) )
korea 2502403755632  -  k 2502325844912  -  ko 2502403760560  -  kor 2502403760368  -  kore 2502403760240
# [3] : is 연산자 결과
print( 't is t[:] = ', t is t[:] )
t is t[:] =  True

 

10. temp, 값 교환

# [1] : 변수 선언 및 값 할당

a = 100

b = 200

print( '[1 ]a, b 변수의 값은 = ', a, b )

 

# [2] : tmep 변수를 이용한 swap

temp = a

a = b

b = temp

print( '[3] a, b 변수의 값은 = ', a, b )

 

[1] 교환전 a, b 변수의 값은 = 100 200

[2] 교환후 a, b 변수의 값은 = 200 100