如何在内联源代码中使用组织模式源代码块中的变量?

How to use variables from an org-mode source block in an inline source code?

我有一个 python 源代码块,它获取 pandas' 数据框中的变量(列)和案例的数量。

最小示例:

#+begin_src python :exports none :session :results output
  df = pd.DataFrame({'a': [1, 2, 3],
                     'b': [4, 5, 6]})
  df_len_columns = len(df.columns)
  df_len_cases = len(df.index)
#+end_src

我现在想做的是像这样在内联源代码中使用这些变量的值:

变量数为src_python{df_len_columns},个案数为src_python{df_len_cases}

但这会引发以下错误:

NameError: name 'df_len_columns' is not defined

请注意,我正在使用会话参数 :session,认为它是同一个会话的一部分并且它会起作用。我也在网上广泛搜索但找不到解决这个特定问题的方法(大多数问题是关于表格的内联代码和内联代码格式)。

是否真的可以内联使用这些变量?

如果我理解正确的话,你想link同一个进程的多个源代码块。

就这么简单:

#+BEGIN_SRC ipython :results output :session testing
a = 5
#+END_SRC

#+RESULTS:

#+BEGIN_SRC ipython :results value  :session testing
a
#+END_SRC

#+RESULTS:
: # Out[6]:
: : 5

在此示例中,两个源块是 ​​linked。

您还可以将所有源代码块合并到一个 .py 文件中。 使用 M-x org-babel-tangle-file,每次你 运行 命令文件都会更新新的缠结。

您似乎需要使用 header 参数告诉内联源代码引用您的 session:

src_python[:session]{df_len_columns}

一般形式是src_<language>[<header arguments>]{<body>}。组织手册中列出了可能的 header 个参数:Specific Header Arguments

注意:当通过 org-export-dispatch.

导出 org 文件时,该值将被替换