Automatic completion of variable and module names is optionally available. To enable it in the interpreter’s interactive mode, add the following to your startup file:
import rlcompleter, readline
readline.parse_and_bind('tab: complete')
bpython appears to do what you want