首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python函数类型失配

问python函数类型失配
EN

Stack Overflow用户
提问于 2022-08-18 12:30:02
回答 1查看 77关注 0票数 1

我将该职能定义如下:

代码语言:javascript
复制
 def pick(l: list, index: int) -> int:
   return l[index]

这意味着我必须传递整数参数作为第二个参数。但当我用,

代码语言:javascript
复制
print(pick(['a', 'b', 'c'],True)) #returns me the 'b'.

我之所以从PHP转到PYTHON,是因为PHP让我头疼。(我的意思是不使用强类型变量,也可以处理utf-8字符串)。

如何将传递的布尔参数限制为整数?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-18 12:50:42

通常,输入和在IDE上配置的类型检查器就足够了。如果要在运行时强制进行类型选择,可以使用以下方法:

代码语言:javascript
复制
if not isinstance(index, int):
    raise TypeError 

但是在Python中,bool是int的一个子类- isinstance(False, int)返回True。这意味着TypeError仍然不会被引发。你可以用

代码语言:javascript
复制
if isinstance(index, bool):
    raise TypeError 

但是在这一点上,如果程序员真的想使用这样的结构,我看不出有什么理由这么做--特别是基于语言规范的bool是int,所以无论int在哪里,Liskov代换原理都应该被接受。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73403117

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档