emacs org-babel结果意外输出

时间:2018-12-25 00:10:40

标签: emacs org-babel

我正在将emacs 25.2.1与spacemacs和scimax结合使用,并尝试创建类似jupyter的笔记本。经过一些实验后,我对从最后一个src块的:results output标签获得的输出感到困惑:

#+name: OOP
#+BEGIN_SRC elisp :results silent :session OOP
  (pyvenv-activate "~/Desktop/py2_venv")
#+END_SRC

#+BEGIN_SRC ipython :session OOP :results silent
  class Dog():
      def __init__(self, breed, name, spots):
          self.breed = breed
          self.name = name

          #expect boolean true/false
          self.spots = spots
#+END_SRC   

#+BEGIN_SRC ipython :session OOP :results output 
  my_dog = Dog(breed='lab', name='Sammy', spots='False')
  print(type(my_dog))
  print(my_dog.breed)
  my_dog.name
  my_dog.spots
#+END_SRC

#+RESULTS:
**:RESULTS:
# Out[23]:
# output
<class '__main__.Dog'>
lab

# text/plain
: 'False'**
:END:

据我了解,所有输出应在output模式下使用session选项显示。另外,我不需要使用print()。我很困惑为什么输出中缺少my_dog.name,却没有my_dog.spots。有什么想法我想念的吗?

1 个答案:

答案 0 :(得分:0)

:results output返回标准输入,它将作为打印输出。

如果您使用:results value:results value raw,则会收到最后的评估,而不是副作用:

#+BEGIN_SRC ipython :session OOP :results value
 my_dog = Dog(breed='lab', name='Sammy', spots='False')
 print(type(my_dog))
 print(my_dog.breed)
 my_dog.name
 my_dog.spots
#+END_SRC

为了获得两个评估,您将需要再键入一些python。

看看:

https://orgmode.org/worg/org-contrib/babel/languages/ob-doc-python.html

还有Emacs SE中的以下答案: https://emacs.stackexchange.com/a/45121/17548