[Python-Dev] once [was: Simple Switch statementZ] (original) (raw)

Ron Adam rrr at ronadam.com
Thu Jun 29 19:22:25 CEST 2006


Christos Georgiou wrote:

I haven't followed the complete discussion about once, but I would assume it would be used as such:

once = that is, always an assignment, with the value stored as a cellvar, perhaps, on first execution 0f the code. Typically I would use it as: def function(a): once pathjoin = os.path.join

In the "name = (once expr)" form I gave, the property of a constant name that can't be rebound or that of a value that persists across function call invocations isn't needed. I was trying to separate the different behaviors cleanly and clearly.

 # once as constant assignment and skipped line later.
 for n in range(x, 10):
     once startcube x**3     # assigns constant value, skips later
     print startcube
     startcube += 1          # give an exception

So this is the same as "const startcube x**3", except it's ignored if it is executed again instead of giving an excepton.

Here the constantness property isn't needed.

 # once as calc once, use result many times expression.
 for n in range(x, 10):
     startcube = (once x**3)     # calculated once used many
     print startcube
     startcube += 1              # Ok to do this

I wasn't suggesting which behavior (or combination of) is correct. That would depend on what problem is meant to solved.

A fourth property of external has been touched on in these threads where some of the suggestions require doing a calculation on a yet to be known value. That's usually handled by linkers in other languages and probably isn't something desired in a dynamic language like Python.

Cheers, Ron



More information about the Python-Dev mailing list