pythonsyntaxkeyword-argument

How can I pass a keyword argument to a function when the name contains a dot `.`?


Given a function that accepts "**kwargs", e.g.,

def f(**kwargs):
     print(kwargs)

how can I pass a key-value pair if the key contains a dot/period (.)?

The straightforward way results in a syntax error:

In [46]: f(a.b=1)
  Cell In[46], line 1
    f(a.b=1)
      ^
SyntaxError: expression cannot contain assignment, perhaps you meant "=="?

Solution

  • Python functions only accepts valid python names (letters, underscore, and digits except for the first character), a dot is not allowed.

    If you want to have a string a.b as parameter, then you must use a dictionary

    f(**{'a.b': 1})
    # {'a.b': 1}
    

    You can combine this with other parameters:

    f(x=2, **{'a.b': 1})
    # {'x': 2, 'a.b': 1}