[Python-ideas] Anonymous blocks (again):
Steven D'Aprano
steve at pearwood.info
Mon May 13 11:11:21 CEST 2013
More information about the Python-ideas mailing list
Mon May 13 11:11:21 CEST 2013
- Previous message: [Python-ideas] Anonymous blocks (again):
- Next message: [Python-ideas] Anonymous blocks (again):
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Mon, May 13, 2013 at 03:17:15PM +1000, Nick Coghlan wrote: > On Mon, May 13, 2013 at 2:47 PM, Steven D'Aprano <steve at pearwood.info> wrote: > > On 13/05/13 13:58, Juancarlo AƱez wrote: > > > >> I don't want new syntax (I think I don't). > >> > >> What I want is to be able to invoke a block of code repeatedly, within a > >> context, and in a pythonic way. > > > > Surely that would be: > > > > with context(): > > while condition: # or a for loop > > block of code goes here > > > > > > If you want something different to this, then I think you do want new > > syntax. Otherwise, what do you gain beyond what can already be done now? > > > > Or am I missing something? > > Ruby uses anonymous callbacks for things where Python instead uses > dedicated syntax: > > Python -> Ruby > > decorated function definitions -> callbacks > for loops + iterator protocol -> callbacks > with statements + context management protocol -> callbacks > callbacks -> callbacks (but with much nicer syntax) > > Blocks are a *really* nice way of doing callbacks, so nice that Ruby > just doesn't have some of the concepts Python does - it uses callbacks > instead. I'm obviously still missing something, because I'm aware of Ruby's blocks, but I don't quite see how they apply to Juancarlo's *specific* use-case, as described above. Unless Juancarlo's use-case is more general than I understood, it seems to me that we don't need blocks, anonymous or otherwise, to "invoke a block of code repeatedly, within a context", in a Pythonic way. Perhaps a concrete (even if toy or made-up) example might help me understand. The only thing I can think of is, if I had a bunch of similar loops inside the same context, where only the body of the loop was different, I might want to factor it out something like this: the_block = {define a block of code, somehow} def do_stuff(block): with context: while condition: {execute the block of code} do_stuff(the_block) do_stuff(another_block) but I think that requires new syntax, and Juancarlo specifically says he doesn't want new syntax. -- Steven
- Previous message: [Python-ideas] Anonymous blocks (again):
- Next message: [Python-ideas] Anonymous blocks (again):
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-ideas mailing list