If you change the value from its compile time value then it is variable. There is no "change once and never change again" concept, and if you ask me that's a daft concept to even consider.
I don't know. I can envision a scenario where you might want to read values from a sensor for the first minute, to establish the range of values that define min and max. You might, at the end of that minute want to "change once" and then never change again.
Of course, you can use regular variables and boolean flags to accomplish the same thing.