我正在将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
。有什么想法我想念的吗?
答案 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