Uwe*_*gen 8 python emacs org-mode
如何在Emacs的Org模式下执行非常简单的Python代码?
第一个例子工作正常,但我不能让它给我最简单的计算结果:
; works
#+begin_src python
def foo(x):
if x>0:
return x+10
else:
return x-1
return foo(50)
#+end_src
#+RESULTS:
: 60
; does not work
#+begin_src python
1+1
#+end_src
#+RESULTS:
: None
; does not work
#+begin_src python
print(1+1)
#+end_src
#+RESULTS:
: None
Run Code Online (Sandbox Code Playgroud)
我使用以下行设置组织模式:
;; enable python for in-buffer evaluation
(org-babel-do-load-languages
'org-babel-load-languages
'((python . t)))
;; all python code be safe
(defun my-org-confirm-babel-evaluate (lang body)
(not (string= lang "python")))
(setq org-confirm-babel-evaluate 'my-org-confirm-babel-evaluate)
Run Code Online (Sandbox Code Playgroud)
abo*_*abo 13
有两种方法可以获得源块的结果 - output和value.你混淆了他们,因此麻烦.
第一块很好.
要修复第二个块:
#+begin_src python :results value
return 1+1
#+end_src
Run Code Online (Sandbox Code Playgroud)
要修复第三个块:
#+begin_src python :results output
print 1+1
#+end_src
Run Code Online (Sandbox Code Playgroud)
输出模式是value必须的return.只是像你一样把它放在那里1+1就行不通.在第三个中,您希望结果是打印输出,但您的默认会话设置是value(我的默认设置为outputbtw).
而这一点与这个org-confirm-babel-evaluate问题无关.我只是把它设置为nil.