본문 바로가기
Programing/Python

5-5 파이썬 내장함수 06

by BroJune 2021. 8. 17.

- 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