python中ls函数_相当于Python中R的ls()函数,用于删除所有创建的对象

这里有不同的问题。在Is this code correct?# remove all created objects

for v in dir(): del globals()[v]

不,不是的!首先dir()返回本地映射中的键。在模块级别,它与globals()相同,但不是在函数内部。接下来它包含一些您不想删除的对象,比如__builtins__。。。在Is there any function which will give the same output like R's ls()?

不完全是,但您可以尝试用一个类来模拟它:

^{pr2}$

当您创建一个更干净的对象时,它会保留一个包含所有已存在对象的列表(更确切地说是一个set对象)。当您调用它的clean方法时,它将从它的globals()映射中删除自创建以来添加的所有对象(包括它自己!)在

示例(使用未注释的跟踪):>>> class Cleaner:

def __init__(self):

self.reset()

def reset(self):

self.keep = set(globals());

def clean(self):

g = list(globals())

for __i in g:

if __i not in self.keep:

print("Removing", __i) # uncomment for tracing what happens

del globals()[__i]

>>> dir()

['Cleaner', '__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__']

>>> c = Cleaner()

>>> i = 1 + 2

>>> import sys

>>> dir()

['Cleaner', '__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'c', 'i', 'sys']

>>> c.clean()

Removing c

Removing i

Removing sys

>>> dir()

['Cleaner', '__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__']

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值