This is a question regarding the documentation around dictionary unpacking. The documentation for the call syntax (http://docs.python.org/3/reference/expressions.html#grammar-token-call) says:

"If the syntax **expression appears in the function call, expression must evaluate to a mapping, the contents of which are treated as additional keyword arguments."

That's fine, but what is a keyword argument? According to the glossary (http://docs.python.org/3.3/glossary.html):

/"keyword argument/: an argument preceded by an identifier (e.g. name=) in a function call or passed as a value in a dictionary preceded by **."

As far as I'm concerned, this leads to some ambiguity in whether the keys of the mapping need to be valid identifiers or not.

Using Cpython, we can do the following:

     def func(**kwargs):
          print kwargs

     d = {'foo bar baz':3}

So that might lead us to believe that the keys of the mapping do not need to be valid identifiers. However, the previous function does not work with the following dictionary:

    d = {1:3}

because not all the keys are strings. Is there a way to petition to get this more rigorously defined?

Thanks,
~Matt



-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to