- id_01
# id : 그 변수의 메모리상의 주소를 알려주기 위한 함수
# 두개의 변수가 서로 동일한 메모리를 바라보고 있는 판별할 수 있어요.
# a = 3
# b = 4
#
# print(a)
# print(b)
# print(id(a))
# print(id(b))
a = 3
b = 3
print(a)
print(b)
print(id(a))
print(id(b))
a = 30
print(a)
print(b)
print(id(a))
print(id(b))
# 처음에 a,b가 동일한 값일때는
# 동일한 메모리를 사용합니다.
# 만약, a의 값을 변경하면
# 그때 부터 서로 다른 메모리를 사용합니다.
- id_02
name1 = '홍길동'
name2 = '이순신'
name3 = '유관순'
print(id(name1))
print(id(name2))
print(id(name3))
print('_'*50)
data = []
data.append(name1)
data.append(name2)
data.append(name3)
for name in data:
print(id(name))
- id_Test_List_01
data = [10,20,30,40,50]
data2 = list(data)
# data2 = data.copy()
# data의 내용을 복사여 새로운 리스트를 생성해 주세요!
# list함수도 copy와 마찬가지로 새로운 리스트를 생성 해 줍니다.
print(data)
print(data2)
print(id(data))
print(id(data2))
data[0] = 100
print(data)
print(data2)
- id_Test_List_02
data = [10,20,30,40,50]
data2 = list(data)
# data2 = data.copy()
# data의 내용을 복사여 새로운 리스트를 생성해 주세요!
# list함수도 copy와 마찬가지로 새로운 리스트를 생성 해 줍니다.
print(data)
print(data2)
print(id(data))
print(id(data2))
data[0] = 100
print(data)
print(data2)
- id_Test_Object_01
# 클래스의 메소드 안에서 self를 통해서 사용하는 변수
# ==> 객체마다 별도의 메모리가 잡히는 멤버 변수
# 클래스안에 메소드안에 있지 않는 변수를
# ==> 모든 객체가 공동으로 사용하는 클래스 변수
# 클래스 변수는 객체없이 클래스 이름으로 접근 가능
class Person:
addr = "서울"
def __init__(self,name,age):
self.name = name
self.age = age
a = Person('김철수',20)
b = Person('김길동',40)
print(Person.addr)
# 클래스 변수는 객체와 무관하게 사용 할 수 있음
# 클래스 변수만 클래스 이름으로 사용가능
print(id(a.name))
print(id(b.name))
# 객체변수 a의 속성 name과
# 객체변수 b의 속성 name은 서로 별도의 메모리가 잡혀요
- id_Test_Object_02
class Person:
addr = "서울"
def __init__(self,name,age):
self.name = name
self.age = age
# 클래스 변수는 객체와 무관하게 사용가능
# 객체가 있다면 객체를 통해서도 사용가능
print(Person.addr)
a = Person('김철수',40)
b = Person('김철수',20)
print(a.addr)
print(b.addr)
print(id(Person.addr))
print(id(a.addr))
print(id(b.addr))
Person.addr = '부산'
print('_'*50)
print(Person.addr)
print(a.addr)
print(b.addr)
- id_Test_Object_03
class Person:
addr = "서울"
def __init__(self,name,age):
self.name = name
self.age = age
a = Person('김철수',40)
b = Person('김철수',20)
c = Person('김유신',50)
a.addr = '부산'
print(Person.addr)
print(a.addr)
print(b.addr)
print(c.addr)
print('_'*50)
print(id(Person.addr))
print(id(a.addr))
print(id(b.addr))
print(id(c.addr))
# 클래스 변수의 값 변경
# ==> 클래스 이름으로 변경하면 모든 객체가 적용된다.
# 객체 참조 변수로 변경하면 그 객체만 적용된다.
# 변경된 그 객체 참조 변수의 클래스변수만 따로 id로 관리된다!
# 모든객체가 동일한 메모리로 사용 할 목적이라면
# 반드시 클래스 이름으로 사용할 것을 권장
# id가 서로 다르게 나오는 것은 알겠는데
# 이거 어디다 써먹어요??
# 답) 두개의 변수가 서로 동일한 메모리를 바라보고 있는지
# 확인해야 할때가 있다면 써먹어요.
- 참고 자료 : Do it! 점프 투 파이썬 https://wikidocs.net/12 -
위키독스
온라인 책을 제작 공유하는 플랫폼 서비스
wikidocs.net
'Programing > Python' 카테고리의 다른 글
5-5 파이썬 내장함수 08 (0) | 2021.08.17 |
---|---|
5-5 파이썬 내장함수 07 (0) | 2021.08.17 |
5-5 파이썬 내장함수 05 (0) | 2021.08.17 |
5-5 파이썬 내장함수 04 (0) | 2021.08.17 |
5-5 파이썬 내장함수 03 (0) | 2021.08.17 |