diff --git a/pythonetc/README.md b/pythonetc/README.md
index 03d66e0..53084f3 100644
--- a/pythonetc/README.md
+++ b/pythonetc/README.md
@@ -48,7 +48,6 @@ These are ideas for future posts. Let me know if you want to write a guest post
+ super()
+ gc
+ trace
-+ del
+ destructor
+ iterator vs iterable
+ next()
@@ -60,3 +59,4 @@ These are ideas for future posts. Let me know if you want to write a guest post
+ generator.throw()
+ generator.close
+ re.scanner
++ pickle and security
diff --git a/pythonetc/del.md b/pythonetc/del.md
new file mode 100644
index 0000000..908180f
--- /dev/null
+++ b/pythonetc/del.md
@@ -0,0 +1,45 @@
+# del
+
+The `del` statement is used to delete things. It has a few distinct behaviors, depending on what is the specified target.
+
+If a variable specified, it will be removed from the scope in which it is defined:
+
+```python
+a = []
+del a
+a
+# NameError: name 'a' is not defined
+```
+
+If the target has a form `target[index]`, `target.__delitem__(index)` will be called. It is defined for built-in collections to remove items from them:
+
+```python
+a = [1, 2, 3]
+del a[0]
+a # [2, 3]
+
+d = {1: 2, 3: 4}
+del d[3]
+d # {1: 2}
+```
+
+Slices are also supported:
+
+```python
+a = [1, 2, 3, 4]
+del a[2:]
+a # [1, 2]
+```
+
+And the last behavior, if `target.attr` is specified, `target.__delattr__(attr)` will be called. It is defined for `object`:
+
+```python
+class A:
+ b = 'default'
+a = A()
+a.b = 'overwritten'
+a.b # 'overwritten'
+del a.b
+a.b # 'default'
+del a.b # AttributeError: 'A' object has no attribute 'b'
+```