ermutuxia

2021-03-08   阅读量: 2012

pycharm版本不稳定问题:TypeError:isinstance() arg 2 must be a type or a tuple of types

扫码加入数据分析学习群

学生:

老师 这里有个问题请教您一下,我用的是pycharm

1.png

Traceback (most recent call last):

File “”,line 9,in

File “”,line 2,in len01

TypeError:isinstance() arg 2 must be a type or a tuple of types



isinstance() 的第二个参数必须是数据类型 或者是一个数据类型的元组

那我这里的问题出在哪里可以帮忙看下吗?

def len01(args):
if isinstance(args,(str,list,tuple)):
if len(args) > 5:
print("传入的对象长度超过5了")
else:
print("传入的对象长度小于5了")
else:
print("类型有误")
len01([1,2,3,4])

老师:我看你的代码没有语法问题,我用的是spyder 我给你运行一下代码,发现这个代码在spyder里面执行没有问题

3.png

说明代码本身没有问题,接下来就是考虑python的版本问题了,发现你的python版本也没有问题。

应该就是pycharm的版本问题了。

In [12]: help(isinstance)
Help on built-in function isinstance in module builtins:

isinstance(obj, class_or_tuple, /)
Return whether an object is an instance of a class or of a subclass thereof.

A tuple, as in ``isinstance(x, (A, B, ...))``, may be given as the target to
check against. This is equivalent to ``isinstance(x, A) or isinstance(x, B)
or ...`` etc.


In [13]: isinstance(1,(str,int,list))
Out[13]: True

学生:


是版本原因 哈哈哈

这个20.3社区版的pycharm不稳定 然后我用了另一个版本的

然后就没有问题了。


老师:好的,不过你的代码逻辑有问题,有漏洞,需要进行如下更改

def len01(args):
    if isinstance(args,(str,list,tuple)):
        if len(args) > 5:
            print("传入的对象长度超过5了")
        elif len(args) < 5:
            print("传入的对象长度小于5了")
        else:
            pass
    else:
        print("类型有误,请输入一个元组")


len01([1,2,3,4])
传入的对象长度小于5了


OK

添加CDA认证专家【维克多阿涛】,微信号:【cdashijiazhuang】,提供数据分析指导及CDA考试秘籍。已助千人通过CDA数字化人才认证。欢迎交流,共同成长!
0.0000 1 0 关注作者 收藏

评论(0)


暂无数据

推荐课程