如何确定 Python 变量的类型?

这篇具有很好参考价值的文章主要介绍了如何确定 Python 变量的类型?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

问:

如何查看变量的类型? (例如无符号 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

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

到了这里,关于如何确定 Python 变量的类型?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python 变量类型

    变量是存储在内存中的值,这就意味着在创建变量时会在内存中开辟一个空间。 基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中。 因此,变量可以指定不同的数据类型,这些变量可以存储整数,小数或字符。 变量赋值 Python 中的变量赋值

    2024年02月08日
    浏览(35)
  • Python教程(6)——Python变量的基础类型。|整数类型|浮点数类型|字符串类型|布尔类型|

    学习编程语言,不得不忽视变量这个概念。Python 中的变量是用于存储数据的名称,你可以将值赋给变量,并在程序的其他地方使用该变量来引用该值。变量在程序中起到存储和操作数据的作用。 如果学过C/C++语言的同学,定义了变量后,需要加个类型的限制,比如 也就是说

    2024年02月14日
    浏览(46)
  • js中如何判断一个变量的数据类型?

    前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发者,这里都将为你提供一个系统而又亲切的学习平台。在这个

    2024年02月09日
    浏览(40)
  • Python 查看数据的类型

    机器学习记录 在 Python 中,有几种方式可以查看一个对象的数据类型: 直接使用 type() 函数可以查看对象的类型: isinstance() 可以检查一个对象是否为某种类型,或者某个类型的子类: 每个对象都有一个 __class__ 属性指向创建它的类: 我们可以使用 dir() 函数获取对象的属性列表,其中

    2024年02月11日
    浏览(33)
  • 【SQL开发实战技巧】系列(十九):数据仓库中时间类型操作(进阶)如何一个SQL打印当月或一年的日历?如何确定某月内第一个和最后—个周内某天的日期?

    【SQL开发实战技巧】系列(一):关于SQL不得不说的那些事 【SQL开发实战技巧】系列(二):简单单表查询 【SQL开发实战技巧】系列(三):SQL排序的那些事 【SQL开发实战技巧】系列(四):从执行计划讨论UNION ALL与空字符串UNION与OR的使用注意事项 【SQL开发实战技巧】系列

    2024年02月03日
    浏览(43)
  • Eclipse在Debug时如何方便查看参数(看各个变量的值)

    初学者在用eclipse时经常会找不到debug的各个参数的值,下面3步让你快速打开各参数窗口 第一步:打开eclipse 第二步:Windows–Preferences 第三步:Java–Editor–Hovers–把第一个✓取消,第二个打✓如图所示 第四步:应用即可显示出各变量的值

    2024年02月12日
    浏览(52)
  • Python(三)变量的6种基本类型

    延续上一章,本章介绍:set(集合)、dictionary(字典) 数据结构 是否可变 是否重复 是否有序 定义符号 列表(list) 可变 可重复 有序 [] 元组(tuple) 不可变 可重复 有序 () 字典(dictionary) 可变 可重复 无序 {key:value} 集合(set) 可变 不可重复 无序 {} 目录 字典 定义 可变

    2024年02月11日
    浏览(33)
  • Python入门(二)变量和简单数据类型(一)

    作者:Xiou 下面来尝试在前面的案例hello_world.py中使用一个变量。 在这个文件开头添加一行代码,并对第二行代码进行修改,如下所示:hello_world.py 运行这个程序,看看结果如何。你会发现,输出与以前相同: 输出结果: 这是因为我们添加了一个名为message的变量。 每个变量

    2024年02月02日
    浏览(42)
  • Python 变量的定义和数据类型的转换

    变量的定义 基本语法: 变量名 = 值 变量名是给对象贴一个用于访问的标签,给对象绑定名字的过程也称为赋值,赋值符号 “=” 变量名自定义,要满足标识符命名规则。 Python中, 不需要事先声明变量名及其类型 ,直接赋值即可创建各种类型的对象变量。 变量在第一次赋值

    2024年02月07日
    浏览(58)
  • C++笔记之如何给 `const char*` 类型变量赋值

    code review! 直接赋值一个字符串字面值(string literal):

    2024年02月04日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包