Syntax for one-line "nonymous" functions in "declaration style"
Alexey Muranov
alexey.muranov at gmail.com
Sun Mar 31 15:08:53 EDT 2019
On dim., Mar 31, 2019 at 6:00 PM, python-list-request at python.org wrote:
> On Sat, Mar 30, 2019, 5:32 AM Alexey Muranov
> <alexey.muranov at gmail.com>
> wrote:
>
>>
>> On ven., Mar 29, 2019 at 4:51 PM, python-list-request at python.org
>> wrote:
>> >
>> > There could perhaps be a special case for lambda expressions such
>> > that,
>> > when they are directly assigned to a variable, Python would use
>> the
>> > variable name as the function name. I expect this could be
>> > accomplished by
>> > a straightforward transformation of the AST, perhaps even by just
>> > replacing
>> > the assignment with a def statement.
>>
>> If this will happen, that is, if in Python assigning a
>> lambda-defined
>> function to a variable will mutate the function's attributes, or
>> else,
>> if is some "random" syntactically-determined cases
>>
>> f = ...
>>
>> will stop being the same as evaluating the right-hand side and
>> assigning the result to "f" variable, it will be a fairly good extra
>> reason for me to go away from Python.
>>
>
> Is there a particular reason you don't like this? It's not too
> different
> from the syntactic magic Python already employs to support the
> 0-argument
> form of super().
I do not want any magic in a programming language i use, especially if
it breaks simple rules.
I do not like 0-argument `super()` either, but at least I do not have
to use it. I am suspicious of `__class__` too. But here only
identifiers are hacked, not the assignment operator. (I suppose the
hack can be unhacked by using your own meta-class with a custom
`__prepare__`.)
Neither i like how a function magically turns into a generator if the
keyword `yield` appears somewhere within its definition.
Those are the things i don't like the most in Python.
Alexey.
More information about the Python-list
mailing list