繁体   English   中英

xonsh:别名和具有相同名称的函数之间的冲突

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM