1
1238
检查是否
检查
以下内容也有效,在某些情况下可能有用:
见 Built-in Functions 在python库中参考相关信息。 另一个注意事项:在本例中,如果您使用的是python 2,那么实际上您可能需要使用:
因为这也会捕获Unicode字符串(
或者,
|
2
161
这个 最 检查物体类型的方法是…不用检查。
因为python鼓励
Duck Typing
,你应该
当然,有时这些美好的抽象会分解
|
3
43
|
4
21
在问题被问和回答之后, type hints were added to Python . python中的类型提示允许检查类型,但与静态类型语言有很大不同。python中的类型提示将期望的参数类型与函数关联为与函数关联的运行时可访问数据,并且 允许 对于要检查的类型。类型提示语法示例:
在这种情况下,我们希望在
可用于查找类型错误的其他程序之一是
(您可能需要安装
这种方式的类型检查不同于静态类型编译语言中的类型检查。因为类型在Python中是动态的,所以必须在运行时进行类型检查,如果我们坚持每次都要进行类型检查,这会带来一定的成本——甚至是对正确的程序也是如此。显式类型检查也可能比需要的更严格,并导致不必要的错误(例如,参数是否确实需要
显式类型检查的好处在于,它可以更早地捕获错误,并提供比duck类型更清晰的错误消息。duck类型的准确需求只能用外部文档来表示(希望它是彻底和准确的),不兼容类型的错误可能发生在远离其来源的地方。 python的类型提示旨在提供一种折衷方案,在这种折衷方案中可以指定和检查类型,但在通常的代码执行过程中不需要额外的成本。
这个
虽然类型提示是检查类型的最蟒蛇式方法,但不检查类型并依赖duck类型通常更为蟒蛇式。类型提示是比较新的,而陪审团仍然在讨论什么时候它们才是最可能的蟒蛇解决方案。一个相对无争议但非常普遍的比较:类型提示提供了一种可以强制执行的文档形式,允许代码提前生成并更容易理解错误,可以捕获duck类型不能捕获的错误,并且可以静态检查(在一个不寻常的意义上,但它仍然在运行时之外)。另一方面,duck打字已经是一种很长一段时间的蟒蛇式的方式,不会强加静态打字的认知开销,不那么冗长,会接受所有可行的类型,然后接受一些。 |
5
17
这里有一个例子,为什么鸭子打字是邪恶的,而不知道什么时候它是危险的。 例如:这里是python代码(可能省略了适当的缩进),请注意 通过处理isinstance和issubclassof函数,确保当你真的需要一只鸭子时,你不会得到炸弹,情况是可以避免的。
|
6
12
|
7
6
我认为使用像python这样的动态语言最酷的一点是,你真的不需要检查类似的东西。
我只需要调用对象上所需的方法并捕获
我在从网上获取数据时经常使用这个
但我相信有时间和地点可以使用
|
8
4
雨果:
你可能是说
假设要将对象添加到现有序列,或者如果是对象序列,则将它们全部添加。
其中一个技巧是,如果您使用的是字符串和/或字符串序列-这很棘手,因为字符串通常被认为是单个对象,但它也是一个字符序列。更糟糕的是,它实际上是一个单长度字符串的序列。
我通常选择设计我的API,这样它只接受一个值或一个序列——这使事情变得更容易。这并不难
(尽管这可能会导致字符串出错,因为它们看起来像(是)序列。) |
9
0
对于更复杂的类型验证,我喜欢 typeguard 基于python类型提示注释的验证方法:
您可以以非常干净和可读的方式执行非常复杂的验证。
|
10
-6
您可以使用下面的行检查给定值的字符类型:
|
July · 如何定义数字间隔,然后四舍五入 1 年前 |
user026 · 如何根据特定窗口的平均值(行数)创建新列? 1 年前 |
Ashok Shrestha · 需要追踪特定的颜色线并获取坐标 1 年前 |
Nicote Ool · 在FastApi和Vue3中获得422 1 年前 |
Abdulaziz · 如何对集合内的列表进行排序[重复] 1 年前 |
asmgx · 为什么合并数据帧不能按照python中的预期方式工作 1 年前 |