如何查看變量的類型,不管是無符號32位,帶符號16位等等? html
我該如何看待它? python
這可能有點可有可無。 但你能夠檢查類型與對象的isinstance(object, type)
爲提到這裏 。 函數
使用__class__
一種方法: spa
>>> a = [1, 2, 3, 4] >>> a.__class__ <type 'list'> >>> b = {'key1': 'val1'} >>> b.__class__ <type 'dict'> >>> c = 12 >>> c.__class__ <type 'int'>
這很簡單。 你這樣作。 code
print(type(variable_name))
如何在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的實現細節。 我本身沒必要處理這個問題。 你可能也不會,若是你真的這樣作,你應該知道不要爲這個答案尋找答案。
您可能正在尋找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'>