เอาต์พุตบล็อกซอร์สของโหมดองค์กร Python อยู่เสมอ ': ไม่มี'


15

นี่คือบล็อกแหล่งที่มาของฉัน:

#+BEGIN_SRC python
print "hello"
#+END_SRC

ผลลัพธ์อยู่เสมอ:

#+RESULTS:
: None

นี่คือการกำหนดค่าองค์กรของฉัน:

    (org-babel-do-load-languages
 'org-babel-load-languages
 '((python . t)
   (C . t)
   (calc . t)
   (latex . t)
   (java . t)
   (ruby . t)
   (scheme . t)
   (sh . t)
   (sqlite . t)
   (js . t)))

Python อยู่ใน PATH และสามารถใช้งานได้ผ่านทางเทอร์มินัล

Emacs-lisp SRC blocks ทำงานได้ดี

ทำไมฉันจะได้รับNoneแทนhello?

คำตอบ:


16

นี่เป็นลักษณะเฉพาะของวิธีที่บาเบลจัดการกับบางภาษา นี้จะช่วยให้รายละเอียดบางอย่างเกี่ยวกับงูหลามและรายการที่สมบูรณ์ของตัวเลือกที่สามารถใช้ได้ที่นี่ มีประโยชน์ค่อนข้างน้อย

โดยทั่วไปขึ้นอยู่กับภาษานั้นมีหลายตัวเลือกสำหรับการส่งออก บางครั้งมันก็สมเหตุสมผลที่จะใช้เอาต์พุตมาตรฐาน (ทำอะไรprint) สำหรับภาษาอื่น (เช่นระดับแปดเสียง) มันเหมาะสมที่จะแสดงรูปภาพ สำหรับไพ ธ อนค่าเริ่มต้นคือvalueซึ่งแสดงค่าส่งคืนของรหัสดังนั้นการเปลี่ยนคำสั่งการพิมพ์ของคุณเป็นการกลับจะให้พฤติกรรมที่คาดหวัง

สิ่งนี้มีประโยชน์ไม่มากในบางกรณีดังนั้นจึงสามารถเปลี่ยนแปลงได้โดยการเพิ่ม:results outputในบรรทัดแรกของบล็อกแหล่งที่มา


14

ในกรณีที่ง่ายมากเช่นนี้มีแฮ็คที่ฉันมักจะใช้แทนที่printด้วยreturn:

#+BEGIN_SRC python
return "hello"
#+END_SRC

#+RESULTS:
: hello

แต่โดยทั่วไปทางออกที่ดีกว่าคือการใช้:results outputดังที่ได้กล่าวไว้โดย user2699

#+BEGIN_SRC python :results output
print("hello")
#+END_SRC

#+RESULTS:
: hello

2
นี่ไม่ใช่แฮ็ค :)
โอมาร์
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.