在 Xonsh 中显示函数定义的命令是啥?

Posted

技术标签:

【中文标题】在 Xonsh 中显示函数定义的命令是啥?【英文标题】:What is the command to show function definitions in Xonsh?在 Xonsh 中显示函数定义的命令是什么? 【发布时间】:2021-09-19 18:53:18 【问题描述】:

在 Bash 中,如果我创建一个函数,我可以使用 type 命令向我显示该函数定义,如下所示:

# define a function
foo 
    echo "bar"


# now show me that definition
$ type foo
foo is a function
foo ()

    echo "bar"

Zsh 和 Fish 的functions 命令都有类似的东西。我检查了bash-to-xsh page here,但找不到等价物。我尝试使用 Python 的 inspect,但也没有用:

def foo():
  echo "bar"

$ foo
<function __main__.foo>

$ import inspect as i
$ i.getsource(foo)
xonsh: For full traceback set: $XONSH_SHOW_TRACEBACK = True
OSError: could not get source code

如何在 Xonsh 中显示方法定义?

【问题讨论】:

【参考方案1】:

根据this thread 的说法,这似乎是 Python 的一个限制,而不是 Xonsh 的真正问题。

如果 Xonsh 函数在文件中定义,inspect 有效。如果函数只在内存中定义,则不可用。

例如,此代码有效:

import inspect
echo @(inspect.getsource($PROMPT_FIELDS['cwd']))

也是这样:

import inspect
echo "def foo():\n\techo 'bar'\n" > foo.xsh
source foo.xsh
echo @(inspect.getsource(foo))

【讨论】:

以上是关于在 Xonsh 中显示函数定义的命令是啥?的主要内容,如果未能解决你的问题,请参考以下文章

mySQL 用户定义函数中 set 命令的正确语法是啥?

python中定义函数的关键字是啥?

VB中子程序或函数未定义是啥意思

C语言枚举定义函数,是啥意思?

c语言中用户自定义函数的格式是啥?

函数的隐式声明是啥意思?