出于某种原因,我无法让isinstance()在Python2.7.2上工作
def print_lol(the_list, indent=False, level=0):
for item in the_list:
if isinstance(item, list):
print_lol(item, indent, level+1)
else:
print(item)
当我编译并运行它时:
>>> list = ["q", "w", ["D", ["E", "I"]]]
>>> print_lol(list)
我收到错误消息:
if isinstance(item, list):
TypeError: isinstance() arg 2 must be a class, type, or tuple of classes and types
我错了什么?
问题是,通过给名为
list
的变量赋值,您已经隐藏了内置的list
:您应该尽量避免对变量使用任何内置名称,因为这通常会导致混淆错误。解决方案是为变量使用不同的名称。
这就是你的问题所在
重写名为python的类型,如
list
,将变量名绑定到一个新的对象实例。所以后来当你试着用list安装时失败了。当您创建新变量时,请不要使用与内置变量不同的名称,也不要与命名空间冲突。
在这个例子中,使用下面的方法很容易
请注意,如果您污染了命名空间,并且正在空闲状态下运行,则重新启动空闲状态是一个不错的选择。
您已将变量命名为
list
:它隐藏了内置的
list
。重命名变量后,重新启动Python(或IDE)。因为您的
list
是一个全局变量,否则它将保持不变。相关问题 更多 >
编程相关推荐