클래스 (그리고 그것은 또한 유형이라고; Python : terminology 'class' VS 'type' 참조) 및 int('123')
을하는 것은 int
개체의 인스턴스를 반환합니다.
그러나 작은 정수 (범위 -5에서 256까지 포함)에 대해 (표준 Python 일명 CPython에서) int
생성자는 실제로 새 정수 객체를 작성하지 않습니다. 효율성을 위해 인터프리터는 작은 정수의 캐시를 가지며 생성자는 단순히 기존의 int
객체에 대한 참조를 반환합니다. 이 주제는 “is” operator behaves unexpectedly with integers에 대한 응답에서 설명합니다.
int()
"int
메쏘드"라고하는 귀하의 책은 아주 조금 엉성합니다. Pedantically 말하자면, int
그 자체가 호출 가능한 객체 인 클래스이고, 클래스를 호출하면 호출은 자동으로 클래스의 생성자 메소드에 대한 호출로 변환됩니다. 그러나 비공식적으로 함수 호출이나 메소드 호출로 int()
을 참조하는 것이 일반적입니다.
첫 번째 단락에서 질문을 거의 잊었습니다. 우리가
[1, 2, 3]
을 쓸 때 인터프리터는 3 개 int
객체를 생성하고 신선한 list
예를 내부에 넣습니다.우리가 "그냥"아직도 list
완전히 본격적인이다 리터럴 목록을 만들더라도
from dis import dis
dis('a=[1,2,3]')
출력
1 0 LOAD_CONST 0 (1)
3 LOAD_CONST 1 (2)
6 LOAD_CONST 2 (3)
9 BUILD_LIST 3
12 STORE_NAME 0 (a)
15 LOAD_CONST 3 (None)
18 RETURN_VALUE
를 따라서 :이 작업을위한 바이트 코드를 분해 할 수 dis
module 표준을 사용하여 인스턴스 개체. 일부 OOP 언어와 달리 Python에는 객체가 아닌 "원시"데이터 유형이 없으므로 리터럴 정수와 리터럴 문자열도 객체입니다. 따라서 리터럴 문자열에는 모든 표준 문자열 메서드가 제공됩니다. 예,
print('hello'.lower)
출력
built-in method lower of str object at 0xb72e7880>
는 리터럴 문자열 'hello'
표준 lower()
방법을 가지고 있음을 보여줍니다.
파이썬 인터프리터에서'help (int)'를 사용해보십시오. 그것은 수업입니다. – smarx
감사합니다 smarx, 나는 이해했다 :) 나는 초심자이고 다른 - 2 개의 용어는 나를 혼란시켰다 : –
sidenote :'1',' "x"'등은 리터럴이다. –