在Java中拥有一个变量
final基本上意味着您一旦分配了变量,就不能重新分配该变量以指向另一个对象。实际上,这并不意味着不能修改该对象。例如,以下Java代码可以很好地运行:
public final List<String> messages = new linkedList<String>();public void addMessage(){ messages.add("Hello World!"); // this mutates the messages list}
但是以下代码甚至无法编译:
public final List<String> messages = new linkedList<String>();public void changeMessages(){ messages = new ArrayList<String>(); // can't change a final variable}
因此,您的问题是关于
finalPython 是否存在。它不是。
但是,Python确实具有不可变的数据结构。例如,虽然您可以更改
list,但不能更改
tuple。您可以变异a,
set但不能变异
frozenset等。
我的建议是,不要担心在语言级别强制执行非突变,而只是专注于确保您没有编写任何在分配了这些对象后对它们进行突变的代码。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)