Perhaps an easier next step would be to get better data about people's opinions with a simple poll? Is there a standard way to vote on things in this list?

I say we do a simple approval vote. Everyone ticks all the syntaxes that they think would be acceptable to include in the language. It's not very precise but it's easy and may inform what to do next.

Here is a script to generate a bunch of options:

for template in [
    'foo(bar, baz="thing", %s)',
    '{"baz": "thing", %s}',
    for affix in ["=", ":", "::"]:
        for rest in [
            f'spam{affix}, stuff{affix}',
            f'{affix}spam, {affix}stuff',
            print(template % rest)

for template in [
    'foo(bar, baz="thing", %s, spam, stuff)',
    '{"baz": "thing", %s, spam, stuff}',
    for separator in ["*", "**", ":", "::", "="]:
        print(template % separator)

# These options are currently valid syntax that are guaranteed to fail at runtime
foo(bar, baz="thing", **(spam, stuff))
foo(bar, baz="thing", **{spam, stuff})
{{"baz": "thing", spam, stuff}}


The output:

foo(bar, baz="thing", spam=, stuff=)
foo(bar, baz="thing", =spam, =stuff)
foo(bar, baz="thing", spam:, stuff:)
foo(bar, baz="thing", :spam, :stuff)
foo(bar, baz="thing", spam::, stuff::)
foo(bar, baz="thing", ::spam, ::stuff)
{"baz": "thing", spam=, stuff=}
{"baz": "thing", =spam, =stuff}
{"baz": "thing", spam:, stuff:}
{"baz": "thing", :spam, :stuff}
{"baz": "thing", spam::, stuff::}
{"baz": "thing", ::spam, ::stuff}
foo(bar, baz="thing", *, spam, stuff)
foo(bar, baz="thing", **, spam, stuff)
foo(bar, baz="thing", :, spam, stuff)
foo(bar, baz="thing", ::, spam, stuff)
foo(bar, baz="thing", =, spam, stuff)
{"baz": "thing", *, spam, stuff}
{"baz": "thing", **, spam, stuff}
{"baz": "thing", :, spam, stuff}
{"baz": "thing", ::, spam, stuff}
{"baz": "thing", =, spam, stuff}
foo(bar, baz="thing", **(spam, stuff))
foo(bar, baz="thing", **{spam, stuff})
{{"baz": "thing", spam, stuff}}


Are there any other options to consider? If people think this list looks complete I can create an online poll with them. I'm open to suggestions about preferred software/websites.

On Fri, Apr 17, 2020 at 6:41 PM Eric V. Smith <> wrote:
On 4/17/2020 12:28 PM, Chris Angelico wrote:
> On Sat, Apr 18, 2020 at 1:54 AM David Mertz <> wrote:
>> Hmmm... I disagree with Chris.
>> I'm definitely -1 on a magic dangling 'foo=' after variable names. And something less than -1 on the even more magic "Lisp symbol that isn't a symbol" ':foo'.
>> Those are just ugly and mysterious.
>> However, I don't HATE the "mode switch" use of '*' or '**' in function calls. I've certainly written plenty of code where I use the same variable name in the calling scope as I bind in the call. Moreover, function *definitions* have an an analogous mode switch with an isolated '*'.
> It sounds to me like there's a lot of weak support or weak opposition,
> with some of it spread between the proposal itself and the individual
> spellings.
> Rodrigo, it may be time to start thinking about writing a PEP. If the
> Steering Council approves, I would be willing to be a (non-core-dev)
> sponsor; alternatively, there may be others who'd be willing to
> sponsor it. A PEP will gather all the different syntax options and the
> arguments for/against each, and will mean we're not going round and
> round on the same discussion points all the times.

I've been around for a while, and I can't imagine that any of these
proposals would be accepted (but I've been accused of having a bad
imagination). I'm saying that not to dissuade anyone from writing a PEP:
far from it. I think it would be useful to have this on paper and
accepted or rejected, either way. I'm saying this to set expectations: a
PEP is a ton of work, and it can be disheartening to put in so much work
for something that is rejected.

So, I'd be willing to sponsor such a PEP, but I'd be arguing that it get

And  I say this as someone who has maybe 20 hours of work left on a PEP
of my own that I think has less than a 50% chance of success. I already
probably have 10 to 15 hours invested in it already.

Python-ideas mailing list --
To unsubscribe send an email to
Message archived at
Code of Conduct: