0

我在 Xonsh 中有一个函数,我试图像命令一样使用它(即:没有括号)。该函数应该可选地接受参数,但是每当我调用不带参数的函数时,我只会得到函数地址。如何调用带有可选参数的函数?

这是示例:

def _up(args, stdin=None):
    # go up any number of directories
    if not args or len(args) < 1:
        args[0] = 1
    balloons = ('../' * int(args[0]))
    # echo @(balloons)
    cd @(balloons)
aliases['up'] = _up

当我up不带参数调用时,我得到<function __main__.up>. 当我这样称呼它时,它可以工作:up 2.

我可以做一个这样的函数,但是如果不使用括号(即:作为命令)我就不能调用它,这是我更喜欢的:

def up(dirs=1):
    # go up any number of directories
    balloons = ('../' * dirs)
    # echo @(balloons)
    cd @(balloons)

调用up()andup(2)都以这种方式工作,但比调用upor更麻烦up 2。在 Xonsh 中完成我想要做的事情的正确方法是什么?

4

1 回答 1

1

我不确定为什么repr当你没有传入参数时你会得到这个函数,但是你的函数的调整版本可以工作:

def _up(args):  # don't need stdin
    # go up any number of directories
    if not args or len(args) < 1:
        args = [1]  # if args is None you can't index to it
    balloons = ('../' * int(args[0]))
    # echo @(balloons)
    cd @(balloons)
aliases['up'] = _up

在@的 current-ishmain上,这可以仅使用 an 提升一个级别,或者您可以使用等指定多个级别。xonshc2f862dfupup 3

于 2021-09-20T13:21:46.010 回答