我在xonshrc
:
def turn_into_alias(func, keep=False):
aliases[func.__name__] = func
del func
它应该将函数转换为别名。但它不起作用。它添加了别名,但del
eting不起作用,因为它删除了传递给它的函数引用。
是否可以设置xonsh以便为别名提供更高的优先级? (可能不是,因为它毕竟是python,在这种情况下:)
有没有办法在xonsh中达到我想要的效果?
答案 0 :(得分:0)
在Python中,因此xonsh,del
仅修改当前范围。因此,在您的示例中,您只是删除func
内的名称turn_into_alias()
。函数对象可能仍然在别处引用它,因此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]