[英]What is the command to show function definitions in Xonsh?
在 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 頁面,但找不到等效項。 我嘗試使用 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 中顯示方法定義?
根據此線程,這似乎是 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(例如 0.13.4)包含superhelp ,其中附加了??
輸出有關對象的信息。 執行檢查比使用inspect
模塊更簡單:
$ foo??
Type: function
String form: <function foo at 0x1084e58a0>
File: /path/to/foo.xsh
Definition: foo()
Source:
def foo():
echo "bar"
不幸的是,它遇到了您在自己的答案中描述的相同問題,即僅針對保存在文件中的函數顯示源代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.