KEK 개발로그
[Python] 변수 본문
반응형
변수
1. 변수(variable)
- 자료형의 값을 저장하는 공간이다.
- 객체를 가리키는 것이다.(객체란 자료형과 같은 것)
a = [1, 2, 3]
print(id(a)) # 2363731186304
# [1, 2, 3] 값을 가지는 리스트 자료형(객체)은 자동으로 메모리에 생성되고, 변수 a는 [1, 2, 3] 리스트가 저장된 공간, 그 메모리의 주소를 가리키게 된다.
# id() 함수를 통해 변수가 가리키고 있는 객체의 주소 값을 알 수 있다.
* 메모리: 컴퓨터가 프로그램에서 사용하는 데이터를 기억하는 공간
* id 함수: 변수가 가리키고 있는 객체의 주소 값을 돌려주는 파이썬 내장 함수
2. 변수 만들기
- 형태: 변수 이름 = 변수에 저장할 값 ('=' assignment 기호 사용)
>> 다른 프로그래밍 언어인 C나 JAVA에서는 변수를 만들 때 자료형을 직접 지정해야 함.
>> 하지만 파이썬은 변수에 저장된 값을 스스로 판단하여 자료형을 지정.(더 편리)
# 변수 만들기(변수 선언)
a = 1
b = "python"
c = [1, 2, 3]
3. 리스트 복사
1) 주소 값까지 완전 동일하게 복사: '=' 기호를 사용해서 변수를 대입해 복사하기.
- 완전히 동일한 리스트인지 확인하는 방법:
>> 주소값(id 함수)
>> 'is' 파이썬 명령어 활용 - 동일한 객체를 가리키고 있는지 판단 가능!
- 완전히 동일하게 복사하면 리스트를 참조하는 변수가 1개에서 2개로 늘어난다는 차이만 있을뿐 완전히 동일하다.
a = [1, 2, 3]
b = a
# 주소값(id 함수)
print(id(a)) # 1966262491136
print(id(b)) # 1966262491136
# 파이썬 명령어 is
print(a is b) # True >> a와 b가 가리키는 객체는 동일한가?
- 동일한 리스트를 가리키고 있다면 하나의 변수의 리스트의 요솟값을 바꾸면 그 다른 변수의 동일한 리스트의 요솟값도 바뀐다.
a = [1, 2, 3]
b = a
a[1] = 4
print(a) # [1, 4, 3]
print(b) # [1, 4, 3]
2) 새로운 변수를 생성할 때 복사하는 변수의 값을 가져오지만 다른 주소를 가리키고 싶을 때
>> [:] 이용 / copy 모듈 이용 / copy 함수
- [:] 이용
>> 리스트 전체를 가리키는 [:]을 사용해서 복사
a = [1, 2, 3]
b = a[:]
a[1] = 4
print(a) # [1, 4, 3]
print(b) # [1, 2, 3] >> 다른 주소를 가리키기 때문에 a 리스트 값을 바꿔도 b에는 영향X
- copy 모듈 이용
>> from copy import copy (copy 모듈의 copy 함수를 사용하기 위해)
from copy import copy
a = [1, 2, 3]
b = copy(a) # b = a[:] 과 동일
print(a) # [1, 2, 3]
print(b) # [1, 2, 3] >> a 리스트와 모양은 동일
print(b is a) # False >> b와 a가 가리키는 객체는 서로 다름
- copy 함수 이용
>> 리스트 자체 함수인 copy 함수를 사용해도 된다.(copy 모듈 import할 필요X)
a = [1, 2, 3]
b = a.copy()
print(a) # [1, 2, 3]
print(b) # [1, 2, 3] >> a 리스트와 모양은 동일
print(b is a) # False >> b와 a가 가리키는 객체는 서로 다름
4. 변수를 만드는 여러 가지 방법
- 여러 시도를 해본 결과..
>> 변수를 리스트, 튜플로 해도되고 / 값을 리스트 튜플로 해도되고 / 변수, 값 둘 다 아무것도 안해도, 생략해도 된다.
>> 튜플, 리스트로 치면 같은 위치의 인덱스에 있는 값을 변수가 가리키고 있다고 생각하면 된다.
# 가능한 조합
a, b = 'python', 'life' # a = 'python', b = 'life'
a, b = ('python', 'life')
a, b = ['python', 'life']
(a, b) = 'python', 'life'
(a, b) = ('python', 'life')
(a, b) = ['python', 'life']
[a, b] = 'python', 'life'
[a, b] = ('python', 'life')
[a, b] = ['python', 'life']
- 두 변수의 값을 바꾸는 간단한 방법
a = 3
b = 5
a, b = b, a # 변수가 같은 위치의 값을 가리킨다고 생각하면 됨
print(a) # 5 # a가 3도 되고, 5도 되는게 아니라 b의 값이었던 5로 바뀌는 것
print(b) # 3
반응형
'Python > 문법' 카테고리의 다른 글
[Python] if문 2 - if문 한줄로 작성하기, 조건부 표현식 (0) | 2022.09.14 |
---|---|
[Python] 제어문 / if문1 (0) | 2022.09.14 |
[Python] 불 자료형 (0) | 2022.09.07 |
[Python] 집합 자료형 (0) | 2022.09.07 |
[Python] 딕셔너리 자료형 (0) | 2022.09.06 |