Christos Georgiou wrote: > I haven't followed the complete discussion about once, but I would assume it > would be used as such: > > once <name> = <expression> > > 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 > <etc>
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 * I may not be able to reply, do to leaving on a trip. Already should be gone. ;-) _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com