我试图将一个集转换为Python 2.6中的列表.我正在使用这种语法:
first_list = [1,2,3,4]
my_set=set(first_list)
my_list = list(my_set)
Run Code Online (Sandbox Code Playgroud)
但是,我得到以下堆栈跟踪:
Traceback (most recent call last):
File "<console>", line 1, in <module>
TypeError: 'set' object is not callable
Run Code Online (Sandbox Code Playgroud)
我怎样才能解决这个问题?
我的问题来自这个问题,其中用户在不知不觉中重新绑定了内置的 global set. 当您尝试覆盖内置函数时,是否有一种直接的方法可以让 python 警告您?
我正在考虑更具体的 Mathematica。在 Mathematica 中,所有内置函数都有属性Protected. 如果您尝试重新定义Set,它会告诉您Set是这样Protected并保持不变,这可能会使您在以后应该工作的事情没有明显原因停止这样做时避免大量混乱。如果你真的很想重新定义Set你仍然可以做到——你只需Unprotect要先去做。您也可以使用Protect自己的符号来保护它们免受意外重新定义。
也许有经验的pythoners不需要这个,但是如果像我这样的新手有这样的东西就好了。(想想看,我已经为 Mathematica 编程了 15 年,Protected但仍然偶尔会保存我的培根。)