[英]xonsh: Clash between alias and function with same name
我在xonshrc
定义了此函数:
def turn_into_alias(func, keep=False):
aliases[func.__name__] = func
del func
应该将函数转换为别名。 但这是行不通的。 可以添加别名,但是del
无效,因为它将删除传递给它的函数引用。
是否可以设置xonsh以便为别名赋予更高的优先级? (在这种情况下,可能不是,因为毕竟是python :)
有没有办法在xonsh中实现我想要的效果?
在Python中,因此在xonsh中, 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]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.