Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #89443

Re: Function decorator having arguments is complicated

Path csiph.com!usenet.pasdenom.info!weretis.net!feeder1.news.weretis.net!feeder.erje.net!1.eu.feeder.erje.net!newsfeed.xs4all.nl!newsfeed3.news.xs4all.nl!xs4all!post.news.xs4all.nl!not-for-mail
Return-Path <rosuav@gmail.com>
X-Original-To python-list@python.org
Delivered-To python-list@mail.python.org
X-Spam-Status OK 0.015
X-Spam-Evidence '*H*': 0.97; '*S*': 0.00; 'explicitly': 0.05; 'say,': 0.05; 'arguments': 0.09; 'subject:Function': 0.09; 'variables.': 0.09; "wouldn't": 0.14; 'both,': 0.16; 'from:addr:rosuav': 0.16; 'from:name:chris angelico': 0.16; 'levels,': 0.16; 'nesting': 0.16; 'referencing': 0.16; 'repetition': 0.16; 'scope,': 0.16; 'wrote:': 0.18; '(where': 0.19; 'to:name:python-list@python.org': 0.22; 'mon,': 0.24; 'class.': 0.26; 'header:In-Reply-To:1': 0.27; 'function': 0.29; 'on,': 0.29; 'especially': 0.30; 'message- id:@mail.gmail.com': 0.30; "i'm": 0.30; 'easier': 0.31; 'cases': 0.33; 'common': 0.35; 'but': 0.35; 'received:google.com': 0.35; 'there': 0.35; 'really': 0.36; 'next': 0.36; 'method': 0.36; 'level': 0.37; 'to:addr:python-list': 0.38; 'pm,': 0.38; 'track': 0.38; 'sure': 0.39; 'to:addr:python.org': 0.39; 'even': 0.60; 'simple': 0.61; 'more': 0.64; 'talking': 0.65; 'gain': 0.79; '2015': 0.84; 'ethan': 0.84; 'furman': 0.84; 'capture': 0.91
DKIM-Signature v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type; bh=AmvCAPY70On/y8nt/db7EiEQWMs5uMhbTxAzQZ0+QUU=; b=fQZpED8YrjVNBv0ZbBXHA2wXs9/JdgP62/sSj6uzFsV9RlGAZHmbCeKrDf4AXuIT1R puxnfqI1U2B4qq1/PQa8Wfij9LhBhR8LYJ8cS/BrDyFYcrrYD4xaeLPt3TcYXuVLYdQj mEaqNyTOQjA67NH83zaCYQVOwyFXLJKeY7gCdewIFVXS6r183aYDnueFPoLy36BPaCuJ x9WyTHfrlVaBf8Il4r5y1/aO41/rNGHUYCWj075DsIHFJ+OUz5T8vHRIlnBjHpYLwpgu E5Zguk3l0zEtriGEunmYGxJTRAYGSmzLP4LfQD8HmGGZWHKLBPgsc8tyetAlInJARz1w +4PA==
MIME-Version 1.0
X-Received by 10.50.43.196 with SMTP id y4mr11185658igl.14.1430112327064; Sun, 26 Apr 2015 22:25:27 -0700 (PDT)
In-Reply-To <20150427044500.GE32422@stoneleaf.us>
References <CAFTm5Ru5NbFOtLPoVSPujeakrGawdHXjNkWJOVs1XrvBNnOUOQ@mail.gmail.com> <20150427042426.GD32422@stoneleaf.us> <CAPTjJmpYOoTLCL6hk2MDk5_V2ffmA-wON2rbnG_cE6oDjg9YoQ@mail.gmail.com> <20150427044500.GE32422@stoneleaf.us>
Date Mon, 27 Apr 2015 15:25:27 +1000
Subject Re: Function decorator having arguments is complicated
From Chris Angelico <rosuav@gmail.com>
To "python-list@python.org" <python-list@python.org>
Content-Type text/plain; charset=UTF-8
X-BeenThere python-list@python.org
X-Mailman-Version 2.1.20+
Precedence list
List-Id General discussion list for the Python programming language <python-list.python.org>
List-Unsubscribe <https://mail.python.org/mailman/options/python-list>, <mailto:python-list-request@python.org?subject=unsubscribe>
List-Archive <http://mail.python.org/pipermail/python-list/>
List-Post <mailto:python-list@python.org>
List-Help <mailto:python-list-request@python.org?subject=help>
List-Subscribe <https://mail.python.org/mailman/listinfo/python-list>, <mailto:python-list-request@python.org?subject=subscribe>
Newsgroups comp.lang.python
Message-ID <mailman.37.1430112335.3680.python-list@python.org> (permalink)
Lines 23
NNTP-Posting-Host 2001:888:2000:d::a6
X-Trace 1430112335 news.xs4all.nl 2842 [2001:888:2000:d::a6]:51009
X-Complaints-To abuse@xs4all.nl
Xref csiph.com comp.lang.python:89443

Show key headers only | View raw


On Mon, Apr 27, 2015 at 2:45 PM, Ethan Furman <ethan@stoneleaf.us> wrote:
>> What's the advantage of that over a simple closure? You have the same
>> number of nesting levels, plus a lot more boiler-plate repetition -
>> instead of just referencing names from the outer scope, you have to
>> explicitly capture them all with "self.n=n" for each one. I'm not sure
>> you really even gain much clarity.
>>
>> In a way, a closure is a short-hand for an object with a __call__
>> method that auto-captures all its local variables.
>
> I find it much easier to keep track of what is going on, especially in
> those cases where there is pre-, post-, or both, processing going on.
>
> YMMV.

Perhaps in the complicated cases, but in the common and simple case
that the OP's talking about (where the purpose of the outermost
function is solely to capture arguments for the next level in), I
wouldn't bother with a class.

But as you say, YMMV.

ChrisA

Back to comp.lang.python | Previous | Next | Find similar | Unroll thread


Thread

Re: Function decorator having arguments is complicated Chris Angelico <rosuav@gmail.com> - 2015-04-27 15:25 +1000

csiph-web