Python: Bad Ideas
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.

Bad Ideas

License Build Status

It is a good idea to install bad ideas!

Bad ideas include a collection of bad Python 3 ideas. This package is not compatible with Python 2.

Bad Ideas are prepared for PyCon 2017 talk: Magic Method, on the wall, who, now, is the __fairest__ one of all?. You can read the proposal for this talk on the Zepworks blog

If you have any bad ideas that you want to be added here, let me know!


This code is for educational purposes ONLY. Use it at your own risk.


pip install bad-ideas


Type less by in-place editing of numbers

Avoid the carpal tunnels, use mutable integers!

>>> from bad import number
>>> num = number(10)
>>> num + 3
>>> num
>>> 3 - num
>>> num
>>> 2 / num
>>> num

Filter that returns list instead of generator when printed

>>> from bad import filtered
>>> foo = [1, 2, 3, 5, 6, 7]
>>> filtered(lambda x: x % 3 == 0, foo)
[3, 6]

Pipe and grep

>>> from bad import grep
>>> LINES = """
... Whether you're new to programming or
... an experienced developer, it's easy
... to learn and use Python.
... Checkout
... for Python jobs.
... """
>>> LINES | grep('Python')
['to learn and use python.', 'checkout', 'for python jobs.']
>>> LINES | grep('Python') | grep('jobs')
['checkout', 'for python jobs.']


Need some memory leaking? Subclass the Undeletable to introduce "persistent" objects that won't go away!

>>> from bad import Undeletable
>>> obj = Undeletable()
>>> del obj
You can't delete me!
>>> obj

Note that you can have many references to the same object. You can still delete all the references except the last one:

>>> obj2 = obj
>>> del obj2
>>> obj2
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'obj2' is not defined
>>> obj


Have a bad idea? Let me know!

Make a PR or open a ticket!