emacs org-babel приводит к неожиданным результатам - PullRequest
0 голосов
/ 25 декабря 2018

Я использую emacs 25.2.1 с spacemacs и scimax и пытаюсь создать блокнот, похожий на юпитер.После некоторых экспериментов меня смущает вывод, полученный из тега :results output из последнего блока src:

#+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 голосов
/ 26 декабря 2018

: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

...