[Python-Dev] PEP 559 - built-in noop() (original) (raw)
Victor Stinner victor.stinner at gmail.com
Sat Sep 9 17:45:21 EDT 2017
- Previous message (by thread): [Python-Dev] PEP 559 - built-in noop()
- Next message (by thread): [Python-Dev] PEP 559 - built-in noop()
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Previous discussion: https://bugs.python.org/issue10049
Issue closed as rejected.
Victor
2017-09-09 14:33 GMT-07:00 Victor Stinner <victor.stinner at gmail.com>:
I was able to find a real keyboard, so here is a more complete code: --- class Noop: def call(self, *args, **kw): return self def enter(self, *args, **kw): return self def exit(self, *args): return def repr(self): return 'nope' ---
Example: --- noop = Noop() print(noop) print(noop()) with noop() as nope: print(nope) with noop as well: print(well) --- Output: --- nope nope nope nope --- IHMO the real question is if we need a Noop.nope() method? Victor 2017-09-09 12:54 GMT-07:00 Victor Stinner <victor.stinner at gmail.com>: I always wanted this feature (no kidding).
Would it be possible to add support for the context manager? with noop(): ... Maybe noop can be an instance of: class Noop: def enter(self, *args, **kw): return self def exit(self, *args): pass def call(self, *args, **kw): return self Victor Le 9 sept. 2017 11:48 AM, "Barry Warsaw" <barry at python.org> a écrit :
I couldn’t resist one more PEP from the Core sprint. I won’t reveal where or how this one came to me. -Barry PEP: 559 Title: Built-in noop() Author: Barry Warsaw <barry at python.org> Status: Draft Type: Standards Track Content-Type: text/x-rst Created: 2017-09-08 Python-Version: 3.7 Post-History: 2017-09-09
Abstract ======== This PEP proposes adding a new built-in function called
noop()
which does nothing but returnNone
. Rationale ========= It is trivial to implement a no-op function in Python. It's so easy in fact that many people do it many times over and over again. It would be useful in many cases to have a common built-in function that does nothing. One use case would be for PEP 553, where you could set the breakpoint environment variable to the following in order to effectively disable it:: $ setenv PYTHONBREAKPOINT=noop Implementation ============== The Python equivalent of thenoop()
function is exactly:: def noop(*args, **kws): return None The C built-in implementation is available as a pull request. Rejected alternatives =====================noop()
returns something ---------------------------- YAGNI. This is rejected because it complicates the semantics. For example, if you always return both*args
and**kws
, what do you return when none of those are given? Returning a tuple of((), {})
is kind of ugly, but provides consistency. But you might also want to just returnNone
since that's also conceptually what the function was passed. Or, what if you pass in exactly one positional argument, e.g.noop(7)
. Do you return7
or((7,), {})
? And so on. The author claims that you won't ever need the return value ofnoop()
so it will always returnNone
. Coghlin's Dialogs (edited for formatting): My counterargument to this would bemap(noop, iterable)
,sorted(iterable, key=noop)
, etc. (filter
,max
, andmin
all accept callables that accept a single argument, as do many of the itertools operations). Makingnoop()
a useful default function in those cases just needs the definition to be:: def noop(*args, **kwds): return args[0] if args else None The counterargument to the counterargument is that usingNone
as the default in all these cases is going to be faster, since it lets the algorithm skip the callback entirely, rather than calling it and having it do nothing useful. Copyright ========= This document has been placed in the public domain. .. Local Variables: mode: indented-text indent-tabs-mode: nil sentence-end-double-space: t fill-column: 70 coding: utf-8 End:
Python-Dev mailing list Python-Dev at python.org https://mail.python.org/mailman/listinfo/python-dev Unsubscribe: https://mail.python.org/mailman/options/python-dev/victor.stinner%40gmail.com
- Previous message (by thread): [Python-Dev] PEP 559 - built-in noop()
- Next message (by thread): [Python-Dev] PEP 559 - built-in noop()
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]