【发布时间】:2011-03-06 02:51:14
【问题描述】:
我有一个方法:
def foo(bar):
# ...
有没有办法将bar 标记为常量?如“bar中的值不能改变”或“bar指向的对象不能改变”。
【问题讨论】:
-
引用总是
const,但值不是(你不能改变bar指向的东西,但如果bar是可变的,你仍然可以改变它的值)。当然,这不是真的正确的,因为您可以欺骗父母的堆栈框架并更改bar指向的内容,但假设您不诉诸这种骇客,则该规则通常适用. -
@NickBastin:什么?
bar = "changed!"-- 我刚刚将bar'points' 更改为(分配给,正确)。 -
@EthanFurman:不完全是。我的观点是,您不能更改父堆栈框架中
bar引用的内容 - 您当然可以在本地分配名称bar以隐藏您传入的对象,但该对象仍然存在并且在父母。 -
也许你可以称它为
bar_constant或BAR。这应该向任何查看您的代码的人表明他们不应该重新分配该名称。因此,您已将其标记为常量。你真的不能做更多的事情。
标签: python constants language-construct