รับผลสุดท้ายใน Python แบบโต้ตอบเชลล์


157

ในระบบคณิตศาสตร์เชิงสัญลักษณ์หลายแบบเช่น Matlab หรือ Mathematica คุณสามารถใช้ตัวแปรเช่นAnsหรือ%เพื่อดึงค่าที่คำนวณล่าสุด มีสิ่งอำนวยความสะดวกที่คล้ายกันในเปลือก Python หรือไม่?


11
แม้ใน Python คำตอบสุดท้ายจะเป็น 42
Tomalak

3
42? ทุกคนพลาดโอกาสในการอ้างอิงของ Incantato ก่อน!
amindfv

[ใน] >>> _1 [จาก] >>> 42? ทุกคนพลาดโอกาสในการอ้างอิงของ Incantato ก่อน!
เกรกอรี่

คำตอบ:


236

ขีด

>>> 5+5
10
>>> _
10
>>> _ + 5
15
>>> _
15

19
มันใช้งานได้ในเชลล์แบบโต้ตอบเท่านั้น อย่าพึ่งพาสคริปต์นี้
John Fouhy

5
นอกจากนี้มันจะไม่ทำงานหากตัวแปร_ได้รับการกำหนดไว้ก่อนหน้านี้ มันไม่ใช่เรื่องแปลกเพราะสัญลักษณ์นี้ใช้สำหรับตัวแปรที่ถูกทิ้ง (ดูstackoverflow.com/questions/5893163/ … )

3
ยายชิ้นสุดท้าย ด้วยสิ่งนี้ฉันสามารถใช้หลามแบบโต้ตอบเป็นเครื่องคิดเลขได้
Jaakko

81

สำหรับระเบียน ipython จะดำเนินการต่อไปอีกหนึ่งขั้นและคุณสามารถเข้าถึงผลลัพธ์ทุกรายการด้วย _ และค่าตัวเลข

In [1]: 10
Out[1]: 10

In [2]: 32
Out[2]: 32

In [3]: _
Out[3]: 32

In [4]: _1
Out[4]: 10

In [5]: _2
Out[5]: 32

In [6]: _1 + _2
Out[6]: 42

In [7]: _6
Out[7]: 42

และเป็นไปได้ที่จะแก้ไขช่วงของบรรทัดด้วยมาโคร% ed เช่นกัน:

In [1]: def foo():
   ...:     print "bar"
   ...:     
   ...:     

In [2]: foo()
bar

In [3]: %ed 1-2

4
พบ__และ___โดยบังเอิญเช่นกันใน 1.2.1
Ciro Santilli 郝海东冠状病六四事件法轮功

9

IPython ช่วยให้คุณสามารถก้าวข้ามขีดล่างอันเดียว_ด้วย double ( __) และขีดล่างที่สาม ( ___), ส่งคืนผลลัพธ์ของคำสั่งที่สองและสามถึงครั้งสุดท้าย

หรือคุณสามารถใช้Out[n]โดยที่nจำนวนของอินพุตที่สร้างเอาต์พุต:

In [64]: 1+1
Out[64]: 2

...

In [155]: Out[64] + 3
Out[155]: 5

สำหรับข้อมูลเพิ่มเติมโปรดดูที่https://jakevdp.github.io/PythonDataScienceHandbook/01.04-input-output-history.html

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