我在xonshrc中定义了这个函数
def turn_into_alias(func, keep=False):
aliases[func.__name__] = func
del func它应该是将一个函数转换成一个别名。但它不起作用。它添加了别名,但是del but不起作用,因为它删除了传递给它的函数引用。
是否可以设置xonsh,使其为别名提供更高的优先级?(可能不是,因为在这种情况下,它毕竟是python:)
有没有办法在xonsh中达到我想要的效果?
发布于 2018-05-26 22:50:49
在Python中,del只修改当前作用域。因此,在您的示例中,您实际上只是删除了turn_into_alias()中的名称func。函数对象可能在其他地方仍然有对它的引用,所以Python不会删除它。
因为它在您的xonshrc中,所以最简单的做法可能是从globals()或__xonsh_ctx__中删除它。
下面这样的代码应该是可行的
def turn_into_alias(func, keep=False):
name = func.__name__
aliases[name] = func
del globals()[name]或
def turn_into_alias(func, keep=False):
name = func.__name__
aliases[name] = func
del __xonsh_ctx__[name]https://stackoverflow.com/questions/50527600
复制相似问题