#python #anaconda #jupyter-notebook #visual-code #html #css #javascript #http

제목id()함수가 궁금합니다2021-07-08 02:21
작성자
첨부파일예시.png (15.5KB)

먼저 좋은 강의 진심으로 감사합니다 저는 모든것은 객체이다라는 문구에 빠져버려서 파이썬의 메모리 작동방식을 공부하다가 아래와같은 궁금이생겨 교수님께 이렇게 질문드립니다

Q1. id()함수는 built in 함수로써 객체의 id를 리턴한다고 하셨는데

a=3

id(a)

id(3)

위 코드 3줄을 출력시 id(a)와 id(3)은 같게 나오는데

class Foo:

     pass

f=Foo()

print( id(f) )

print( id(Foo()) )

위코드 5줄을 출력시 id(f)와 id(Foo())는 다르게 나오는 이유가 무엇인지 궁금합니다

f는 Foo instance의 주소를 가지고 있으며 id(f)는 Foo instance의 주소를 출력하는것이고 id(Foo())는 첫예시 id(3)처럼 id(f)와 같은값이 나와야 된다고 생각이 듭니다

global 네임스페이스상에 a=3은 'a'=3의 딕셔너리 형태로 저장되고 class Foo는 global네임스페이스상에 Foo라고 저장되며 독립적인 local네임스페이스를 가져서 그런것인가 등 id()함수와 네임스페이스 사이의 특징이나 여러가지 사례를 통해 증명하려고 했으나 도저히 모르겠고 그 정확한이유를 모르겠습니다

ps.

a=3

print(a is 3) ==> True

class Foo:

   pass

f=Foo()

print(f is Foo()) ==> False

이 코드와 관련이 있는것같습니다


Q2. id()는 ()안의 객체의 id를 리턴하는것이 정의인데 

a=3

id(a)

코드에서 id(a)는 a변수의 주소를 리턴해야되는것이아닌지 정확한 id()함수의 역할이 무엇인지 궁금합니다

저는 a는 변수로써 객체의 주소를 레퍼런스하고 있는것이기에 객체가 아니므로 id()의 ()안에 변수가 들어올시 변수가 가리키는 객체의 주소를 리턴한다고 생각합니다


Q3. 파이썬의 모든것은 객체라고하는데 변수도 객체인것입니까?

Q2예시처럼 변수또한 객체라면 help(id)에 나오는것처럼 a 객체의 id를 리턴해야되는것이 아닌지가 궁금합니다

댓글