如何肯定Python變量的類型?

如何查看變量的類型,不管是無符號32位,帶符號16位等等? html

我該如何看待它? python


#1樓

這可能有點可有可無。 但你能夠檢查類型與對象的isinstance(object, type)爲提到這裏函數


#2樓

使用__class__一種方法: spa

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

#3樓

這很簡單。 你這樣作。 code

print(type(variable_name))

#4樓

如何在Python中肯定變量類型?

因此,若是你有一個變量,例如: orm

one = 1

你想知道它的類型嗎? htm

在Python中,有正確的方法和錯誤的方法來作全部事情。 這是正確的方法: 對象

使用type

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

您可使用__name__屬性來獲取對象的名稱。 (這是使用__dunder__名稱所需的少數特殊屬性之一 - 在inspect模塊中甚至沒有方法。) ip

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

不要使用__class__

在Python中,如下劃線開頭的名稱在語義上不是公共API的一部分,而且這是用戶避免使用它們的最佳實踐。 (除非絕對必要。) get

因爲type給出了對象的類,咱們應該避免直接獲得它。 :

>>> one.__class__

這一般是人們在訪問方法中的對象類型時的第一個想法 - 他們已經在尋找屬性,所以類型彷佛很奇怪。 例如:

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

別。 相反,請鍵入(self):

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

整數和浮動的實現細節

如何查看變量的類型,不管是無符號32位,帶符號16位等等?

在Python中,這些細節是實現細節。 因此,通常來講,咱們一般不會在Python中擔憂這一點。 可是,知足你的好奇心......

在Python 2中,int一般是一個有符號整數,等於實現的寬(受系統限制)。 它一般在C中實現爲long 。 當整數大於此值時,咱們一般將它們轉換爲Python longs(具備無限精度,不要與C longs混淆)。

例如,在32位Python 2中,咱們能夠推斷出int是帶符號的32位整數:

>>> import sys

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

在Python 3中,舊的int消失了,咱們只使用(Python的)long做爲int,它具備無限的精度。

咱們還能夠得到有關Python浮點數的一些信息,這些浮點數一般在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來代替。

而且不要過多擔憂Python的實現細節。 我本身沒必要處理這個問題。 你可能也不會,若是你真的這樣作,你應該知道不要爲這個答案尋找答案。


#5樓

您可能正在尋找type()函數。

請參閱下面的示例,但Python中沒有像Java那樣的「unsigned」類型。

正整數:

>>> 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'>
相關文章
相關標籤/搜索