| ▲ | quietbritishjim 3 days ago | |||||||||||||
> There’s a huge difference between functions that might mutate a dictionary you pass in to them and functions that definitely won’t. Maybe I misunderstood, but it sounds to me like you're hoping for the following code to work:
But this won't work (as in, type checkers will complain) because dict is not derived from frozendict (or vice-versa). You'd have to create a copy of the dict to pass it to the function. (Aside from presumably not being what you intended, you can already do that with regular dictionaries to guarantee the original won't change.) | ||||||||||||||
| ▲ | sevensor 3 days ago | parent [-] | |||||||||||||
No, I’d type the function argument as a Mapping. Frozendict is so that the function will raise an exception if it violates its type signature. Edit: that is, if as the caller you want foo to be immutable, then you make it a frozendict | ||||||||||||||
| ||||||||||||||