TypeError:范围对象不可调用



我试图实现一个简单的python函数来生成所有素数到给定𝑛的列表。您可以在下面找到代码片段。

def prime_list(n):
non = []
for i in range(2, n+1):
for j in range(2, n+1):
if i*j<=n:
non.append(i*j)
non.append(1)
unique = set(non)
prime = []
for i in range(1, n+1):
if i not in unique:
prime.append(i)
prime = list(prime)
return prime    
my_prime = prime_list(100)
print(my_prime)

之后,我运行程序,我得到这个错误:

TypeError: range object is not callable

我检查了我是否在任何地方将列表定义为变量,但是我没有。

似乎从错误,你覆盖了range内置命名一个变量"范围"?

一般来说,要从内存中删除一个变量,您不必重新启动笔记本内核,您可以使用del关键字/builtin。

example = [1,2]
del example
print(example)
# NameError: name 'example' is not defined

即使删除隐藏在内置函数名称后面的变量也可以工作,并替换对内置函数的引用。

range = [1, 2, 3]       # oops!
del range
for i in range(10):
print(i)
# 1
# 2
# 3 etc..

我尝试重新启动内核并运行所有内容。

因为如果你曾经定义了一个名为list的变量,即使你后来删除了它,记事本也会处理"列表";作为一个变量,直到您重新启动内核。

重新启动内核解决了我的问题!

最新更新