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

81 Views Asked by At

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 "=="?
1

There are 1 best solutions below

0
mozway On BEST ANSWER

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}