2012-01-23 2 views
0

가능한 모든 변수 유형을 어떻게 알 수 있습니까? ... 그것은 하나 'INT'또는 '부동'또는 n의 값에 따라 'STR'과 같은 출력을 줄 것이다,파이썬에서 가능한 모든 변수 유형

n = int(raw_input()) 

if n<50: 
     a = 5 
elif n<100: 
     a = 6.8 
else: 
     a = 'abc' 

print type(a) 

을 다음의 예를 고려하지만

는 우리 모두가 할 수 없음 가능한 변수 유형?

{INT, 플로트, STR} 변수의 유형이 실행 경로에 의존하기 때문에

+4

먼저. 더 나은 영어 맞춤법 검사기가 필요합니다. 귀하의 질문은 읽기가 어렵습니다. 둘째, 파이썬에는 무한한 수의 유형이 있습니다 (새로운 유형은'class'를 통해 정의 될 수 있기 때문에). 당신이 당신이 그것을 읽는 것으로 배울 수없는 당신의 코드에 대해 배우려하는 것은 무엇입니까? –

+1

모국어가 아닌 사람이 약어, 오타 및 불필요한 구두점이 있기 때문에이 질문을 읽는 데 어려움이 있습니다. 이것을 (예를 들어'Bt','abv') 쓸 수 있습니까? 감사! – phihag

+0

파이썬은 동적 인 오리 형 프로그래밍 언어입니다. 일반적으로 이것은 행위가 유형보다 더 중요하다는 것을 의미합니다. 또한 변수가 _any_ 유형이 될 수 있음을 의미합니다.그러나이 경우'a'를 생성하는 코드를 작성 했으므로'a'의 유형을 알 수 있습니다. 'a'가 취할 수있는 값 (따라서 어떤 유형)을 결정하는 언어 기능 정적 분석은 없습니다. 당신은 그것을 추적해야합니다. – twooster

답변

5

당신은 런타임에이를 확인할 수 없습니다 예를 들어 위의 출력과 같은 무언가를 제공해야합니다. 내가 아는 한이 일을 할 수있는 정적 분석 도구도 없습니다.

5

파이썬 인터프리터에 알려진 모든 유형을 열거해야합니다. 나는 그것이 가능할 것이라고 생각하지만 많은 종류가 있기 때문에 본질적으로 의미가 없을 것입니다.

파이썬은 동적 유형 지정 언어이므로 C와 같이 정적으로 형식이 지정된 언어와 같은 의미로 변수가 없습니다. 스 니펫에서 a은 단순히 객체에 바인딩 된 이름입니다. 이 객체는 파이썬 인터프리터에게 알려진 어떤 유형이라도 될 수 있습니다.

동적 유형이 지정된 언어로 프로그래밍 할 때 사고 방식에 근본적인 차이가 있으며 과 같은 질문을하는 경우이 개체는 어떤 유형입니까?은 피해야합니다. 대신 양식 에 대해이 개체가 지원하는 작업에 대한 질문을하는 것이 좋습니다.이 프로그래밍 방식은 duck typing으로 알려져 있습니다.

2

여기서 핵심은 파이썬의 변수가 어떤 유형도 가지고 있지 않아야한다고 생각합니다. 변수는 할당 된 객체를 참조하는 태그 일뿐입니다. 유형을 실제로 보유하고있는 것은 객체 자체입니다.

이 외에도 모든 종류의 객체를 변수에 할당 할 수 있다고 가정하면 변수가 참조하는 객체의 가능한 유형은 언어에서 작성할 수있는 가능한 유형의 양과 같습니다. 하드웨어 부담에 따라 거의 언 바운드 숫자 여야합니다.

0

가능한 모든 변수 유형을 사용할 수 있습니까?

아니요, Python의 변수에는 유형이 없으므로 없습니다. 않습니다.

type(a)을 쓸 때 a이라는 변수 유형을 확인하지 않습니다. a이라는 이름의 유형을 확인하고 있습니다 (다른 이름도있을 수 있습니다).

관련 문제