簡體   English   中英

在 Xonsh 中顯示函數定義的命令是什么?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM