0


如何确定 Python 变量的类型?

问:

如何查看变量的类型? (例如无符号 32 位)

答1:

huntsbot.com聚合了超过10+全球外包任务平台的外包需求,寻找外包任务与机会变的简单与高效。

使用 type() 内置函数:

>>> i =123>>>type(i)>>>type(i) is intTrue>>> i =123.456>>>type(i)>>>type(i) is floatTrue

要检查变量是否属于给定类型,请使用 isinstance:

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

请注意,Python 的类型与 C/C++ 不同,这似乎是您的问题。

需要注意的一点(因为问题是关于数字的) - bool 是 int 的子类。所以 isinstance(True, int) 或 isinstance(False, int) 将返回 True。

答2:

huntsbot.com聚合了超过10+全球外包任务平台的外包需求,寻找外包任务与机会变的简单与高效。

您可能正在寻找type() 内置函数。

请参阅下面的示例,但 Python 中没有像 Java 那样的“无符号”类型。

正整数:

>>> v =10>>>type(v)

大正整数:

>>> v =100000000000000>>>type(v)

负整数:

>>> v =-10>>>type(v)

字面字符序列:

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

浮点整数:

>>> v =3.14159>>>type(v)
当我看到这个时,我不得不加倍接受。 Java SE8 现在包含无符号整数,我已经用它开发了很多东西,以至于 Java 在 SE8 之前从未有过无符号整数似乎是有罪的。

答3:

huntsbot.com聚合了超过10+全球外包任务平台的外包需求,寻找外包任务与机会变的简单与高效。

就是这么简单。你这样做。

print(type(variable_name))

答4:

huntsbot.com全球7大洲远程工作机会,探索不一样的工作方式

如何确定 Python 中的变量类型?

因此,如果您有一个变量,例如:

one =1

你想知道它的类型吗?

在 Python 中做任何事情都有正确的方法和错误的方法。这是正确的方法:

使用类型

>>>type(one)

您可以使用 name 属性来获取对象的名称。 (这是您需要使用 dunder 名称来获得的少数特殊属性之一 - inspect 模块中甚至没有它的方法。)

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

不要使用 class

在 Python 中,以下划线开头的名称在语义上不是公共 API 的一部分,用户最好避免使用它们。 (除非绝对必要。)

由于 type 为我们提供了对象的类,我们应该避免直接获取它。 :

>>> one.__class__

这通常是人们在方法中访问对象类型时的第一个想法——他们已经在寻找属性,所以类型看起来很奇怪。例如:

classFoo(object):
    def foo(self):
        self.__class__

不。相反,做类型(自我):

classFoo(object):
    def foo(self):type(self)

整数和浮点数的实现细节

如何查看变量的类型是无符号 32 位、有符号 16 位等?

在 Python 中,这些细节是实现细节。所以,一般来说,我们在 Python 中通常不会担心这个问题。不过,为了满足你的好奇心…

在 Python 2 中,int 通常是一个有符号整数,等于实现的 word 宽度(受系统限制)。它通常实现为 long in C。当整数变得比这更大时,我们通常将它们转换为 Python 长整数(精度不受限制,不要与 C 长整数混淆)。

例如,在 32 位 Python 2 中,我们可以推断 int 是有符号的 32 位整数:

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

在 Python 3 中,旧的 int 消失了,我们只使用 (Python’s) long as int,它有 unlimited precision.

我们还可以获得一些关于 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:

huntsbot.com全球7大洲远程工作机会,探索不一样的工作方式

print type(variable_name)

在处理此类问题时,我还强烈推荐使用 IPython 交互式解释器。它允许您键入 variable_name? 并将返回有关对象的完整信息列表,包括类型和该类型的文档字符串。

例如

In[9]:var=123In[10]:var?Type:intBaseClass:StringForm:123Namespace:InteractiveDocstring:int(x[, base])-> integer

如果可能,将字符串或数字转换为整数。浮点参数将被截断为零(这不包括浮点数的字符串表示形式!)转换字符串时,请使用可选的基数。转换非字符串时提供基数是错误的。如果参数超出整数范围,则会返回一个 long 对象。

我要求无符号整数,有符号整数等
print type(str) 在 Python 3.6 中返回错误。使用type(str)
@KolobCanyon 那是因为在 3.x 中, print 需要括号:print(type(str))
您确实应该修改 print type(var) 错误代码。

答6:

huntsbot.com洞察每一个产品背后的需求与收益,从而捕获灵感

a ="cool"type(a)//result 'str'

or 
do 
`dir(a)` 
tosee the list of inbuilt methods you can have on the variable.

答7:

huntsbot.com提供全网独家一站式外包任务、远程工作、创意产品分享与订阅服务!

使用 class 的另一种方法:

>>> a =[1,2,3,4]>>> a.__class__

>>> b ={'key1':'val1'}>>> b.__class__

>>> c =12>>> c.__class__
re: comment "names that start with underscores..."(单)下划线与双下划线(“dunders”)非常不同,它们绝对是公共 API 的一部分,当然可以使用它们。这可能会有所帮助... youtu.be/wf-BqAjZb8M

答8:

huntsbot.com全球7大洲远程工作机会,探索不一样的工作方式

Python中的简单类型检查示例:

asserttype(variable_name)==intasserttype(variable_name)== bool

asserttype(variable_name)== list
这应该是公认的答案,因为它显示了如何实际使用返回的值。没有人关心在终端中看到 type() 的结果,我们希望它进行类型检查,但具体方法并不明显(我假设您必须将类型作为字符串进行比较:if (type(var)=='str'):)

答9:

与HuntsBot一起,探索全球自由职业机会–huntsbot.com

这可能无关紧要。但您可以使用 isinstance(object, type) 检查对象的类型,如提到的 here。

huntsbot.com洞察每一个产品背后的需求与收益,从而捕获灵感

我认为这比在检查过程中使用的类型函数要好得多。如果你想检查结果并采取行动,你必须使用 try catch with type 但 isinstance 返回 true 或 false

答10:

huntsbot.com洞察每一个产品背后的需求与收益,从而捕获灵感

这个问题有点模棱两可——我不确定你所说的“视图”是什么意思。如果您尝试查询原生 Python 对象的类型,@atzz 的回答将引导您朝着正确的方向前进。

但是,如果您尝试生成具有原始 C 类型语义的 Python 对象(例如 uint32_t、int16_t),请使用 struct 模块。因此,您可以确定给定 C 类型原语中的位数:

>>> struct.calcsize('c') # char1>>> struct.calcsize('h') # short2>>> struct.calcsize('i') # int4>>> struct.calcsize('l') # long4

这也反映在 array 模块中,该模块可以制作以下低级类型的数组:

>>> array.array('c').itemsize # char1

支持的最大整数(Python 2 的 int)由 sys.maxint 给出。

>>>importsys, math
>>> math.ceil(math.log(sys.maxint,2))+1 # Signedness32.0

还有 sys.getsizeof,它返回 Python 对象在剩余内存中的实际大小:

>>> a =5>>> sys.getsizeof(a) # Residual memory.12

对于浮点数据和精度数据,使用 sys.float_info:

>>> 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)
据我了解,这个问题询问有关在 Python 中查询“变量”的类型。您的回答通常是正确的,但题外话。

答11:

huntsbot.com全球7大洲远程工作机会,探索不一样的工作方式

您是指在 Python 中还是使用 ctypes?

在第一种情况下,您根本不能——因为 Python 没有带符号/无符号的 16/32 位整数。

在第二种情况下,您可以使用 type():

>>>importctypes>>> a = ctypes.c_uint() # unsigned int>>>type(a)

有关 ctypes 及其类型的更多参考,请参阅 the official documentation。

原文链接:https://www.huntsbot.com/qa/3VgJ/how-to-determine-a-python-variables-type?lang=zh_CN&from=csdn

huntsbot.com提供全网独家一站式外包任务、远程工作、创意产品分享与订阅服务!


本文转载自: https://blog.csdn.net/kalman2019/article/details/128692785
版权归原作者 HuntsBot 所有, 如有侵权,请联系我们删除。

“如何确定 Python 变量的类型?”的评论:

还没有评论