Quick and dirty debugging output for tired programmers.
For a short demo, watch the Lightning Talk from PyCon 2013.
Install q with pip install -U q
.
All output goes to /tmp/q
(or on Windows, to $HOME/tmp/q
). You can
watch the output with this shell command while your program is running:
tail -f /tmp/q
To print the value of foo, insert this into your program:
import q; q(foo)
To print the value of something in the middle of an expression, you can
wrap it with q()
. You can also insert q/
or q|
into the expression;
q/
binds tightly whereas q|
binds loosely. For example, given this
statement:
file.write(prefix + (sep or '').join(items))
you can print out various values without using any temporary variables:
file.write(prefix + q(sep or '').join(items)) # prints (sep or '')
file.write(q/prefix + (sep or '').join(items)) # prints prefix
file.write(q|prefix + (sep or '').join(items)) # prints the arg to write
To trace a function (showing its arguments, return value, and running time), insert this above the def:
import q
@q
To start an interactive console at any point in your code, call q.d():
import q; q.d()
By default the output of q is not truncated, but it can be truncated by calling:
q.short
Truncation can be reversed by:
q.long # Truncates output to 1,000,000
q.long = 2000000 # Truncates output to 2,000,000
q
for golangqq
for elixiric
for Python - Similar library for Python, inspired byq
.
The following Lightning Talk shows how powerful using q can be.