generator/coroutine terminology

Mark Lawrence breamoreboy at yahoo.co.uk
Sat Mar 14 12:56:53 EDT 2015


On 14/03/2015 16:33, Rustom Mody wrote:
> On Saturday, March 14, 2015 at 9:45:10 PM UTC+5:30, Chris Angelico wrote:
>> On Sun, Mar 15, 2015 at 2:59 AM, Rustom Mody wrote:
>>> Causing all sorts of unnecessary confusions:
>>> An int-function returns int and a char*-functions returns char*.
>>> Does a void-function return void??
>>> No a void function doesn't return anything!
>>> Ah So a void function does a longjmp?
>>>
>>> All of which is to say that in retrospect we need (at least in imperative programming) procedures and functions.
>>>
>>> Best if the language supports them
>>
>> Python has a broad concept of "functions/methods that return something
>> interesting" and "functions/methods that always return None". (The
>> distinction often corresponds to non-mutator and mutator methods, but
>> that's just convention.)
>
> With due respect Chris, you are confused:
>
> Sure any effective *pythonista* (who writes useful python) will have this concept.
>
> Python (as against pythonistas) has no such concept¹ as "function that ALWAYS
> returns None"
>
> Consider this foo
>
>>>> def foo(x):
> ...  if x>0: return x-1
> ...
>>>> foo(3)
> 2
>>>> foo(-1)
>>>>
>
> As best as I can see python makes no distinction between such a foo and
> the more usual function/methods that have no returns.
> You can I can talk about these and distinguish them
> Python has no clue about it.
>

Python *ALWAYS* returns None for any path through a function that 
doesn't specify a return value.  Taking your example.

 >>> def foo(x):
...     if x>0: return x-1
...
 >>> import dis
 >>> dis.dis(foo)
   2           0 LOAD_FAST                0 (x)
               3 LOAD_CONST               1 (0)
               6 COMPARE_OP               4 (>)
               9 POP_JUMP_IF_FALSE       20
              12 LOAD_FAST                0 (x)
              15 LOAD_CONST               2 (1)
              18 BINARY_SUBTRACT
              19 RETURN_VALUE
         >>   20 LOAD_CONST               0 (None)
              23 RETURN_VALUE

-- 
My fellow Pythonistas, ask not what our language can do for you, ask
what you can do for our language.

Mark Lawrence




More information about the Python-list mailing list