标签: del

从字典中删除元素

有没有办法从Python中删除字典中的项目?

另外,如何从字典中删除项目以返回副本(即,不修改原始文件)?

python dictionary del

1243
推荐指数
15
解决办法
145万
查看次数

什么时候在Python中有用?

我真的不能想到为什么python需要del关键字(并且大多数语言似乎没有类似的关键字).例如,不是删除变量,而是可以分配None给它.从字典中删除时,del可以添加方法.

是否有任何理由保留delpython,或者它是Python垃圾收集前几天的遗迹?

python dictionary del python-internals

350
推荐指数
12
解决办法
31万
查看次数

哪个在python,del或delattr中更好?

这可能是愚蠢的,但它一直在唠叨我的脑后.

Python为我们提供了两种从对象中删除属性的内置方法,del命令字和delattr内置函数.我更喜欢delattr,因为我觉得它更明确一点:

del foo.bar
delattr(foo, "bar")
Run Code Online (Sandbox Code Playgroud)

但我想知道他们之间是否存在引擎盖下的差异.

python del

166
推荐指数
5
解决办法
8万
查看次数

包上的`del`有某种记忆

del似乎有一些困扰我的记忆.请参阅以下内容:

In [1]: import math

In [2]: math.cos(0)
Out[2]: 1.0

In [3]: del math.cos

In [4]: math.cos(0)
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-4-9cdcc157d079> in <module>()
----> 1 math.cos(0)

AttributeError: module 'math' has no attribute 'cos'
Run Code Online (Sandbox Code Playgroud)

精细.让我们看看如果删除整个数学包会发生什么:

In [5]: del math

In [6]: math.cos(0)
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-6-9cdcc157d079> in <module>()
----> 1 math.cos(0)

NameError: name 'math' is not defined
Run Code Online (Sandbox Code Playgroud)

所以现在数学本身就像预期的那样消失了.

现在让我们再次导入数学:

In [7]: import math

In [8]: math.cos(0)
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call …
Run Code Online (Sandbox Code Playgroud)

python packages ipython del python-3.x

43
推荐指数
3
解决办法
4006
查看次数

我不明白这个python __del__行为

有人可以解释为什么以下代码的行为方式如下:

import types

class Dummy():
    def __init__(self, name):
        self.name = name
    def __del__(self):
        print "delete",self.name

d1 = Dummy("d1")
del d1
d1 = None
print "after d1"

d2 = Dummy("d2")
def func(self):
    print "func called"
d2.func = types.MethodType(func, d2)
d2.func()
del d2
d2 = None
print "after d2"

d3 = Dummy("d3")
def func(self):
    print "func called"
d3.func = types.MethodType(func, d3)
d3.func()
d3.func = None
del d3
d3 = None
print "after d3"
Run Code Online (Sandbox Code Playgroud)

输出(注意d2的析构函数从不被调用)是这个(python 2.7)

delete d1
after d1
func called
after …
Run Code Online (Sandbox Code Playgroud)

python del

33
推荐指数
4
解决办法
4万
查看次数

删除列表中的所有对象

我创建了许多对象然后我存储在列表中.但是我想在一段时间之后删除它们,因为我创建了一个新闻并且不希望我的记忆力变高(在我的情况下,如果我不删除它,它会跳到20演出的ram).

这里有一些代码来说明我想要做的事情:

class test:
    def __init__(self):
        self.a = "Hello World"
    def kill(self):
        del self

a = test()
b = test()
c = [a,b]

print("1)Before:",a,b)

for i in c:
    del i

for i in c:
    i.kill()   

print("2)After:",a,b)
Run Code Online (Sandbox Code Playgroud)

A和B是我的对象.C是这两个对象的列表.我试图在C中使用for循环删除它:一次使用DEL和其他时间使用函数.它似乎不起作用,因为打印继续显示对象.

我需要这个,因为我多次创建了10万个对象.我第一次创建100k对象,第二次创建100k对象但是我不需要保留之前的100k.如果我不删除它们,内存使用率非常高,非常快.

python memory object del

32
推荐指数
2
解决办法
11万
查看次数

在Python中,是使用`del`语句代码的味道?

每当我处理原型脚本时,我倾向于使用它,并且:

  1. 使用一些常见的变量(例如fileCount)和
  2. 有一个大方法(20多行),和
  3. 不要使用类或命名空间.

在这种情况下,为了避免潜在的变量冲突,我会在完成后立即删除bugger.我知道,在生产代码中我应该避免使用1.,2.和3.,但是从原型工作到完全抛光的类是非常耗时的.有时我可能想要解决一个次优,快速的重构工作.在那种情况下,我发现保持这些del陈述很方便.我是否养成了不必要的坏习惯?是del完全可以避免的?什么时候会好的?

python del

27
推荐指数
2
解决办法
6223
查看次数

Python del语句

del在Python中调用变量.这会立即释放分配的内存还是等待垃圾收集器收集?与java一样,显式调用del对释放内存的时间没有影响.

python garbage-collection del

19
推荐指数
1
解决办法
7168
查看次数

Node的del命令 - 回调未触发

我正在通过一个关于gulp的复数课程.John Papa正在演示如何将一个删除现有css文件的函数注入到编译新文件的例程中.

del函数的回调没有触发.del函数正在运行,文件被删除,我看不到任何错误消息.如果我手动调用回调它会执行,所以看起来函数是完整的.所以我想知道什么会导致del不想执行回调.

删除例程:

function clean(path, done) {
    log('cleaning ' + path);
    del(path, done);   // problem call
}
Run Code Online (Sandbox Code Playgroud)

'done'函数没有触发,但如果我将代码更改为:

function clean(path, done) {
    log('cleaning ' + path);
    del(path);
    done();
}
Run Code Online (Sandbox Code Playgroud)

当然,在继续之前,这样做会使得等到del完成之前的目的无效.

任何有关正在发生的事情的想法都将受到赞赏.

供参考(如有相关):

编译css函数:

gulp.task('styles', ['clean-styles'], function(){
    log('compiling less');
    return gulp
        .src(config.less)
        .pipe($.less())
        .pipe($.autoprefixer({browsers:['last 2 versions', '> 5%']}))
        .pipe(gulp.dest(config.temp));
});
Run Code Online (Sandbox Code Playgroud)

注入清洁功能:

gulp.task('clean-styles', function(done){
    var files = config.temp + '/**/*.css';
    clean(files, done);
});
Run Code Online (Sandbox Code Playgroud)

UPDATE

如果有其他人遇到这个,重新观看了培训视频,它正在使用del的v1.1.我查了一下,我正在使用2.x. 安装v 1.1后所有工作.

del node.js gulp

19
推荐指数
2
解决办法
4577
查看次数

python如何关闭已经gc'ed的文件?

我一直认为如果一个文件在没有关闭的情况下被打开就会泄漏,但我只是验证了如果我输入以下代码行,该文件将关闭:

>>> f = open('somefile.txt')
>>> del f
Run Code Online (Sandbox Code Playgroud)

出于纯粹的好奇心,这是如何工作的?我注意到该文件不包含__del __方法.

python garbage-collection file del

15
推荐指数
1
解决办法
3220
查看次数