在 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 中显示函数定义的命令是啥?的主要内容,如果未能解决你的问题,请参考以下文章