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. ;-)
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4