问:
如何查看变量的类型? (例如无符号 32 位)
答1:
huntsbot.com聚合了超过10+全球外包任务平台的外包需求,寻找外包任务与机会变的简单与高效。
使用 type() 内置函数:
>>> i = 123
>>> type(i)
>>> type(i) is int
True
>>> i = 123.456
>>> type(i)
>>> type(i) is float
True
要检查变量是否属于给定类型,请使用 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__
这通常是人们在方法中访问对象类型时的第一个想法——他们已经在寻找属性,所以类型看起来很奇怪。例如:
class Foo(object):
def foo(self):
self.__class__
不。相反,做类型(自我):
class Foo(object):
def foo(self):
type(self)
整数和浮点数的实现细节
如何查看变量的类型是无符号 32 位、有符号 16 位等?
在 Python 中,这些细节是实现细节。所以,一般来说,我们在 Python 中通常不会担心这个问题。不过,为了满足你的好奇心…
在 Python 2 中,int 通常是一个有符号整数,等于实现的 word 宽度(受系统限制)。它通常实现为 long in C。当整数变得比这更大时,我们通常将它们转换为 Python 长整数(精度不受限制,不要与 C 长整数混淆)。
例如,在 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’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 = 123
In [10]: var?
Type: int
Base Class:
String Form: 123
Namespace: Interactive
Docstring:
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)`
to see the list of inbuilt methods you can have on the variable.
答7:
huntsbot.com提供全网独家一站式外包任务、远程工作、创意产品分享与订阅服务!文章来源地址https://www.toymoban.com/news/detail-415049.html
使用 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中的简单类型检查示例:
assert type(variable_name) == int
assert type(variable_name) == bool
assert type(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') # char
1
>>> struct.calcsize('h') # short
2
>>> struct.calcsize('i') # int
4
>>> struct.calcsize('l') # long
4
这也反映在 array 模块中,该模块可以制作以下低级类型的数组:
>>> array.array('c').itemsize # char
1
支持的最大整数(Python 2 的 int)由 sys.maxint 给出。
>>> import sys, math
>>> math.ceil(math.log(sys.maxint, 2)) + 1 # Signedness
32.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():
>>> import ctypes
>>> 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文章来源:https://www.toymoban.com/news/detail-415049.html
huntsbot.com提供全网独家一站式外包任务、远程工作、创意产品分享与订阅服务!
到了这里,关于如何确定 Python 变量的类型?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!