[python] 파이썬 변수의 유형을 결정하는 방법?

부호없는 32 비트, 부호있는 16 비트 등 변수 유형을 어떻게 확인합니까?

어떻게 보나요?



답변

type()내장 함수를 사용하십시오 .

>>> i = 123
>>> type(i)
<type 'int'>
>>> type(i) is int
True
>>> i = 123.456
>>> type(i)
<type 'float'>
>>> type(i) is float
True

변수가 주어진 유형인지 확인하려면 다음을 사용하십시오 isinstance.

>>> i = 123
>>> isinstance(i, int)
True
>>> isinstance(i, (float, str, set, dict))
False

파이썬은 C / C ++와 같은 타입을 가지고 있지 않습니다.


답변

내장 기능을 찾고있을 수 있습니다 .type()

아래 예제를 참조하십시오. 그러나 Java와 마찬가지로 Python에는 “서명되지 않은”유형이 없습니다.

양의 정수:

>>> v = 10
>>> type(v)
<type 'int'>

양의 정수 :

>>> v = 100000000000000
>>> type(v)
<type 'long'>

음의 정수 :

>>> v = -10
>>> type(v)
<type 'int'>

문자의 문자 순서 :

>>> v = 'hi'
>>> type(v)
<type 'str'>

부동 소수점 정수 :

>>> v = 3.14159
>>> type(v)
<type 'float'>


답변

너무 간단합니다. 당신은 이것을 이렇게합니다.

print(type(variable_name))


답변

파이썬에서 변수 유형을 결정하는 방법은 무엇입니까?

예를 들어 변수가 있다면

one = 1

그 유형을 알고 싶습니까?

파이썬에서 모든 것에 대해 올바른 방법과 잘못된 방법이 있습니다. 올바른 방법은 다음과 같습니다.

사용하다 type

>>> type(one)
<type 'int'>

__name__속성을 사용 하여 객체의 이름을 얻을 수 있습니다 . (이것은 __dunder__이름을 얻는 데 필요한 몇 가지 특수 속성 중 하나입니다 – inspect모듈 에는 그 방법이 없습니다 .)

>>> type(one).__name__
'int'

사용하지 마십시오 __class__

파이썬에서 밑줄로 시작하는 이름은 의미 상 공개 API의 일부가 아니며 사용자가 사용하지 않는 것이 가장 좋습니다. (필요한 경우 제외)

type우리에게 객체의 클래스를 제공하기 때문에 우리는 이것을 직접 얻지 않아야합니다. :

>>> one.__class__

이것은 일반적으로 사람들이 메소드에서 객체의 유형에 액세스 할 때 가장 먼저 생각하는 것입니다. 이미 속성을 찾고 있으므로 유형이 이상하게 보입니다. 예를 들면 다음과 같습니다.

class Foo(object):
    def foo(self):
        self.__class__

하지마 대신, (self)를 입력하십시오 :

class Foo(object):
    def foo(self):
        type(self)

int 및 float의 구현 세부 사항

부호없는 32 비트, 부호있는 16 비트 등 변수 유형을 어떻게 확인합니까?

파이썬에서 이러한 세부 사항은 구현 세부 사항입니다. 따라서 일반적으로 파이썬에서는 이에 대해 걱정하지 않습니다. 그러나 호기심을 없애기 위해 …

Python 2에서 int는 일반적으로 구현의 단어 너비 (시스템에 의해 제한됨) 와 동일한 부호있는 정수 입니다. 일반적으로 C길게 구현됩니다 . 정수가 이보다 커지면 일반적으로 정수로 파이썬 long으로 변환합니다 (C long과 혼동하지 않도록 무제한 정밀도로).

예를 들어, 32 비트 Python 2에서 int가 부호있는 32 비트 정수라고 추론 할 수 있습니다.

>>> import sys

>>> format(sys.maxint, '032b')
'01111111111111111111111111111111'
>>> format(-sys.maxint - 1, '032b') # minimum value, see docs.
'-10000000000000000000000000000000'

파이썬 3에서는 오래된 int가 사라지고 무한 정밀도 를 가진 int만큼 (Python ‘s)을 사용 합니다.

파이썬의 float에 관한 정보도 얻을 수 있는데, 일반적으로 C 에서 double 로 구현됩니다 .

>>> sys.float_info
sys.floatinfo(max=1.7976931348623157e+308, max_exp=1024, max_10_exp=308, 
min=2.2250738585072014e-308, min_exp=-1021, min_10_exp=-307, dig=15, 
mant_dig=53, epsilon=2.2204460492503131e-16, radix=2, rounds=1)

결론

__class__의미 상 비공개 API 인을 사용하여 변수 유형을 가져 오지 마십시오 . type대신 사용하십시오 .

그리고 파이썬의 구현 세부 사항에 대해 너무 걱정하지 마십시오. 나는이 문제를 해결할 필요가 없었습니다. 당신은 아마하지 않을 것입니다, 당신이 정말로한다면, 당신은 무엇을 해야하는지에 대한 대답을 찾지 않을만큼 충분히 알아야합니다.


답변

print type(variable_name)

나는 이와 같은 질문을 다룰 때 IPython 대화 형 통역사를 강력히 추천합니다 . 형식을 사용하면 형식 variable_name?및 형식에 대한 문서 문자열을 포함하여 개체에 대한 전체 정보 목록을 반환합니다.

예 :

In [9]: var = 123

In [10]: var?
Type:       int
Base Class: <type 'int'>
String Form:    123
Namespace:  Interactive
Docstring:
    int(x[, base]) -> integer

가능하면 문자열 또는 숫자를 정수로 변환하십시오. 부동 소수점 인수는 0쪽으로 잘립니다 (부동 소수점 숫자의 문자열 표현은 포함되지 않습니다!) 문자열을 변환 할 때 선택적인 밑을 사용하십시오. 문자열이 아닌 것을 변환 할 때베이스를 제공하는 것은 오류입니다. 인수가 정수 범위를 벗어나면 대신 긴 오브젝트가 리턴됩니다.


답변

a = "cool"
type(a)

//result 'str'
<class 'str'>
or 
do 
`dir(a)` 
to see the list of inbuilt methods you can have on the variable.


답변

사용하는 또 다른 방법 __class__:

>>> a = [1, 2, 3, 4]
>>> a.__class__
<type 'list'>
>>> b = {'key1': 'val1'}
>>> b.__class__
<type 'dict'>
>>> c = 12
>>> c.__class__
<type 'int'>