问:
如何查看变量的类型? (例如无符号 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提供全网独家一站式外包任务、远程工作、创意产品分享与订阅服务!
版权归原作者 HuntsBot 所有, 如有侵权,请联系我们删除。