วิธีการล้างตัวแปรใน ipython


146

บางครั้งฉันรันสคริปต์อีกครั้งภายในเซสชัน ipython เดียวกันและฉันได้รับความประหลาดใจที่ไม่ดีเมื่อตัวแปรไม่ได้ถูกล้าง ฉันจะล้างตัวแปรทั้งหมดได้อย่างไร และเป็นไปได้ไหมที่จะบังคับเรื่องนี้ทุกครั้งที่ฉันเรียกใช้คำสั่งเวทย์มนตร์% run?

ขอบคุณ

คำตอบ:


206

%reset ดูเหมือนว่าจะล้างตัวแปรที่กำหนดไว้


2
ขอบคุณ มีวิธีใดบ้างในการตั้งค่าโดยอัตโนมัติก่อนที่จะเรียกใช้% แต่ละครั้ง
ตั๊กแตน

2
คุณสามารถแปลงสคริปต์ของคุณเป็นฟังก์ชันเพื่อรักษาเนมสเปซส่วนกลางให้สะอาด
Robert Pollak

35
เพิ่งค้นพบ% reset -f ล้างเนมสเปซส่วนกลางโดยไม่มีการยืนยันจากผู้ใช้
WillJones

1
ใช่การรีเซ็ต -f ยอดเยี่ยมไม่จำเป็นต้องยืนยันด้วยตนเองทุกครั้งอีกต่อไป :)
user3723247

1
@Victor %ใช้สำหรับคำสั่งเวท ipython นี่คือ%reset ipython.readthedocs.io/en/stable/interactive/ …
aisbaa

56

แก้ไขหลังจากความคิดเห็น @ErdemKAYA

หากต้องการลบตัวแปรให้ใช้คำสั่ง magic:

%reset_selective <regular_expression>

ตัวแปรที่จะถูกลบออกจาก namespace <regular_expression>เป็นหนึ่งที่ตรงกับที่กำหนด

ดังนั้น

%reset_selective -f a 

จะลบ ทุกaตัวแปรที่มี

แต่เพื่อลบเท่านั้นaและไม่aa :

In: a, aa = 1, 2
In: %reset_selective -f "^a$"
In: a  # raise NameError
In: aa  # returns 2

เห็นเช่นกัน %reset_selective?ตัวอย่างเพิ่มเติมและhttps://regexone.com/สำหรับบทแนะนำ regex

ในการลบตัวแปรทั้งหมดในเนมสเปซให้ดูที่:

%reset?

9
มิฉะนั้น "del a" จาก python ก็สามารถใช้ได้เช่นกัน
SeF

1
ไม่คำสั่งนี้จะถือว่าname_variableเป็นคำสั่ง regex และจะลบสิ่งที่ตรงกับมัน
Erdem KAYA

@ErdemKAYA ขอบคุณฉันไม่เคยสังเกตมาก่อน! แก้ไขคำตอบแล้ว
SeF

1
ไม่ใช่เลย! :) มันค่อนข้างเคาน์เตอร์ใช้งานง่ายแน่นอน
Erdem KAYA


13

ฉันเหนื่อย

%reset -f

และล้างตัวแปรและเนื้อหาทั้งหมดโดยไม่ต้องแจ้งให้ทราบ -fไม่ดำเนินการบังคับคำสั่งที่กำหนดโดยไม่ต้องแจ้งสำหรับใช่ / ไม่ใช่

หวังว่านี่จะช่วย .. :)


9

การเพิ่มบรรทัดต่อไปนี้ในสคริปต์ใหม่จะล้างตัวแปรทั้งหมดทุกครั้งที่คุณเรียกใช้สคริปต์อีกครั้ง:

from IPython import get_ipython
get_ipython().magic('reset -sf') 

เพื่อให้ชีวิตง่ายขึ้นคุณสามารถเพิ่มพวกเขาไปยังแม่แบบเริ่มต้นของคุณ

ใน Spyder: Tools>Preferences>Editor>Edit template


ฉันชอบสิ่งนี้เพราะมันสามารถเรียกใช้จากสคริปต์
Zargo

4

นอกเหนือจากวิธีการที่กล่าวถึงก่อนหน้านี้ คุณยังสามารถใช้คำสั่ง del เพื่อลบตัวแปรหลายตัว

del variable1,variable2

0

ตัวเลือกออกจากในแผงควบคุมแผงจะล้างตัวแปรทั้งหมดในตัวสำรวจตัวแปร

*** โปรดทราบว่าคุณจะสูญเสียรหัสทั้งหมดที่คุณเรียกใช้ในแผงควบคุมคอนโซล

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