5

在 Python 中,值可以通过三种方式进入作用域:它们作为参数传入,它们可以从封闭作用域访问,最后封闭类和封闭函数的第一个参数可用于super(). 为什么不向开发人员公开这种机制,以便可以将其扩展到其他情况呢?

__context__ ChainMap有一个随处可用的东西,它会暴露东西不是更干净吗?默认情况下,输入类的定义会将类本身暴露在其中__context__['__class__'],输入非静态、非类成员函数会将第一个参数暴露为__context__['self']. 但是,一般来说,我们可以用类似的构造做更多的事情

entercontext {'blah': 123}:
     f(__context__['blah'])

这会将 dict 推送到 ChainMap 并在退出范围时弹出它。

然后可以使用它来实现许多其他设置情况,例如 numpy set_printoptions/get_printoptions等。您只需将它们推送到上下文中,而不是获取、设置和恢复。

4

0 回答 0