A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://python.github.io/peps/pep-0336/ below:

PEP 336 – Make None Callable

PEP 336 – Make None Callable
Author:
Andrew McClelland <eternalsquire at comcast.net>
Status:
Rejected
Type:
Standards Track
Created:
28-Oct-2004
Post-History:
Table of Contents Abstract

None should be a callable object that when called with any arguments has no side effect and returns None.

BDFL Pronouncement

This PEP is rejected. It is considered a feature that None raises an error when called. The proposal falls short in tests for obviousness, clarity, explicitness, and necessity. The provided Switch example is nice but easily handled by a simple lambda definition. See python-dev discussion on 17 June 2005 [1].

Motivation

To allow a programming style for selectable actions that is more in accordance with the minimalistic functional programming goals of the Python language.

Rationale

Allow the use of None in method tables as a universal no effect rather than either (1) checking a method table entry against None before calling, or (2) writing a local no effect method with arguments similar to other functions in the table.

The semantics would be effectively:

class None:

    def __call__(self, *args):
        pass
How To Use

Before, checking function table entry against None:

class Select:

    def a(self, input):
        print 'a'

    def b(self, input):
        print 'b'

    def c(self, input):
        print 'c'

    def __call__(self, input):
     function = { 1 : self.a,
           2 : self.b,
           3 : self.c
        }.get(input, None)
     if function:  return function(input)

Before, using a local no effect method:

class Select:

    def a(self, input):
        print 'a'

    def b(self, input):
        print 'b'

    def c(self, input):
        print 'c'

    def nop(self, input):
     pass

    def __call__(self, input):
        return { 1 : self.a,
        2 : self.b,
        3 : self.c
        }.get(input, self.nop)(input)

After:

class Select:

    def a(self, input):
        print 'a'

    def b(self, input):
        print 'b'

    def c(self, input):
        print 'c'

    def __call__(self, input):
     return { 1 : self.a,
        2 : self.b,
        3 : self.c
        }.get(input, None)(input)
References Copyright

This document has been placed in the public domain.


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