Làm thế nào để xóa các biến trong ipython?


146

Đôi khi tôi chạy lại một tập lệnh trong cùng một phiên ipython và tôi gặp phải những bất ngờ tồi tệ khi các biến không được xóa. Làm thế nào để tôi xóa tất cả các biến? Và có thể buộc nó bằng cách nào đó mỗi khi tôi gọi lệnh ma thuật% run không?

Cảm ơn

Câu trả lời:


206

%reset dường như để xóa các biến được xác định.


2
Cảm ơn. Bất kỳ cách nào để thiết lập nó tự động trước mỗi% chạy?
châu chấu

2
Bạn có thể chuyển đổi tập lệnh của mình thành một hàm để giữ sạch không gian tên toàn cục.
Robert Pollak

35
Chỉ tìm thấy% reset -f xóa không gian tên toàn cầu mà không cần xác nhận của người dùng
WillJones

1
có thiết lập lại -f là tuyệt vời, không cần phải xác nhận thủ công mỗi lần nữa :)
dùng3723247

1
@Victor %được sử dụng cho các lệnh ma thuật ipython tại đây %reset ipython.readthedocs.io/en/ sóng / interactive / trộm
aisbaa

56

EDITED sau khi bình luận @ErdemKAYA.

Để xóa một biến, sử dụng lệnh ma thuật:

%reset_selective <regular_expression>

Các biến được xóa khỏi không gian tên là một biến khớp với cái đã cho <regular_expression>.

vì thế

%reset_selective -f a 

sẽ xóa tất cả các biến chứa một a.

Thay vào đó, chỉ xóa avà không xóa aa:

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

xem %reset_selective?thêm để biết thêm ví dụ và https://regexone.com/ để biết hướng dẫn về regex.

Để xóa tất cả các biến trong không gian tên, xem:

%reset?

9
Nếu không thì "del a" từ python, cũng có thể được sử dụng.
SeF

1
Không, lệnh này sẽ coi name_variablenhư một tuyên bố regex và sẽ loại bỏ bất cứ điều gì phù hợp với nó.
Erdem KAYA

@ErdemKAYA cảm ơn, tôi chưa bao giờ nhận thấy điều đó trước đây! Trả lời chỉnh sửa.
SeF

1
Không có gì! :) Nó là phần nào trực quan thực sự.
Erdem KAYA

37

Trong ipython bạn có thể loại bỏ một đơn biến như thế này:

del x

13

Tôi đã thử

%reset -f

và xóa tất cả các biến và nội dung mà không cần nhắc. -fthực hiện hành động bắt buộc đối với lệnh đã cho mà không nhắc có / không .

Mong điều này có ích .. :)


9

Thêm các dòng sau vào tập lệnh mới sẽ xóa tất cả các biến mỗi khi bạn chạy lại tập lệnh:

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

Để làm cho cuộc sống dễ dàng, bạn có thể thêm chúng vào mẫu mặc định của bạn.

Trong Spyder: Tools>Preferences>Editor>Edit template


Tôi thích điều này vì nó cũng có thể được chạy từ một kịch bản.
Zargo

4

Ngoài các phương pháp đã đề cập trước đó. Bạn cũng có thể sử dụng lệnh del để loại bỏ nhiều biến

del variable1,variable2

0

Tùy chọn thoát trong Bảng điều khiển cũng sẽ xóa tất cả các biến trong trình thám hiểm biến

*** Lưu ý rằng bạn sẽ mất tất cả mã mà bạn đã chạy trong Bảng điều khiển

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.