<div dir="ltr"><span style="font-family: arial, sans-serif;">With numpy print options, for example, the usual pattern is to save some of the print options, set some of them, and then restore the old options.  Why not expose the options as a ChainMap called numpy.printoptions?  ChainMap could then expose a context manager that pushes a new dictionary on entry and pops it on exit via, say, child_context that accepts a dictionary.  Now, instead of:</span><div style="font-family: arial, sans-serif;"><br></div><div style="font-family: arial, sans-serif;">saved_precision = np.get_printoptions()['<wbr>precision']</div><div style="font-family: arial, sans-serif;">np.set_printoptions(precision=<wbr>23)</div><div style="font-family: arial, sans-serif;">do_something()</div><div style="font-family: arial, sans-serif;">np.set_printoptions(precision=<wbr>saved_precision)</div><div style="font-family: arial, sans-serif;"><br></div><div style="font-family: arial, sans-serif;">You can do the same with a context manager, which I think is stylistically better (as it's impossible to forget to reset the option, and no explicit temporary invades the local variables):</div><div style="font-family: arial, sans-serif;"><br></div><div style="font-family: arial, sans-serif;">with np.printoptions.child_context(<wbr>{'precision', 23}):</div><div style="font-family: arial, sans-serif;">    do_something()</div><div style="font-family: arial, sans-serif;"><br></div><div style="font-family: arial, sans-serif;">Best,</div><div style="font-family: arial, sans-serif;"><br></div><div style="font-family: arial, sans-serif;">Neil</div></div>