学生:
老师 这里有个问题请教您一下,我用的是pycharm
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里面执行没有问题
说明代码本身没有问题,接下来就是考虑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