Cộng đồng Hỏi & Đáp của Inflearn
파이썬 (2-2) 같은 오브젝트 참조 관련해서 질문 드립니다.
Viết
·
279
0
m=800, n=800으로 선언을 하고 id 넣고 출력을 해도 true가 아닌 false가 뜹니다. 왜이런 건가요?
또 수업에서와 같이 m=800의 객체의 고유값을 확인했는데 수업과 다른 숫자가 출력되는 이유도 궁금합니다.
python
Câu trả lời 2
0
Python 3.9.0을 사용하고 있습니다. 이게 혹시 버전이 올라가면서 변경된 건 없을까요? iPython을 열고 입력해보면 두 변수의 참조 번호가 다르게 나옵니다(아래는 실행한 결과). 실행환경은 리눅스입니다.
joshua@blackwidow:~$ ipython
Python 3.9.0 (default, Oct 17 2020, 16:52:55)
Type 'copyright', 'credits' or 'license' for more information
IPython 7.18.1 -- An enhanced Interactive Python. Type '?' for help.
In [1]: m = 800
In [2]: n = 800
In [3]: print(id(m))
140500560747056
In [4]: print(id(n))
14050056074689
In [5]: print(id(m), id(n))
140500560747056 140500560746896
In [6]:
그래서 a=b=c는 혹시 id가 같지 않을까 해서 아래와 같이 해봤더니 이때에는 동일하게 나오네요.
joshua@blackwidow:~$ ipython
Python 3.9.0 (default, Oct 17 2020, 16:52:55)
Type 'copyright', 'credits' or 'license' for more information
IPython 7.18.1 -- An enhanced Interactive Python. Type '?' for help.
In [1]: a = b = c = 700
In [2]: a is b
Out[2]: True
In [3]: a is c
Out[3]: True
In [4]: b is c
Out[4]: True
In [5]: d = 700
In [6]: a is d
Out[6]: False
In [7]: print('a: '+str(id(a)), 'b: '+str(id(b)), 'c: '+str(id(c)), 'd: '+str(id(d)), sep='\n')
a: 139701311787120
b: 139701311787120
c: 139701311787120
d: 139701311539856
In [8]: a = 701
In [9]: print('a: '+str(id(a)), 'b: '+str(id(b)), 'c: '+str(id(c)), 'd: '+str(id(d)), sep='\n')
a: 139701310301872
b: 139701311787120
c: 139701311787120
d: 1397013115398560
새콤한 비버
Người chia sẻ kiến thức
안녕하세요.
혹시 m과 n의 id를 출력하기 전에 중간에 값이 변경되었는지 확인바랍니다.
초기에 같은 값으로 변수를 선언해도 중간에 값이 변경되면 id 값이 변합니다.
추가적으로, 객체의 고유값 id는 새 파일을 작성해서 출력할때마다 계속 변경됩니다.
그 이유는 id는 랜덤하게 지정되기 때문입니다.
감사합니다.





