"use strict"
DL Neil
PythonList at danceswithmice.info
Mon Mar 11 16:34:19 EDT 2019
On 12/03/19 8:00 AM, Abdur-Rahmaan Janhangeer wrote:
> about the editor part i think yes it'd underline unused variables or
> somewhat similar.
is that the best we can hope for (coupled with type annotations)?
> the problem was that i was reviewing the code, since everything worked (no
> errors but wrong output for sure) it took sometimes to find that var. it
> was like someone telling me there is fish in that lake and i was throwing
> my line trying ...
> just a way to flag those types of vars when needed.
Yes. Such is enormously frustrating, but where does it fit in the wider
scope of coding in Python? Proportionally?
Once again at risk of tripping over my long, flowing, beard: in the
(?)good, old days, when every compilation resulted in a pile of
print-out (and hopefully no syntax errors or typos); we could request a
list of all of the variables/symbols defined in the code. One still had
to scan that list manually, and pick-out any inconsistencies, eg
misspellings!
Which made me think about the Python debugger
(https://docs.python.org/3/library/debug.html)
[regret: since working with a team that demanded I update/learn/follow
TDD (Test-driven Development), I haven't (?gone back to) used PDB since
the time when all of my coding was in Py2!]
If you haven't already, it might be worth a quick shufti. Aspects may
help you/your colleague!
A debugger will enable you to monitor the values stored in variables -
but may not be so helpful, in that you must either look at 'everything'
or first be aware of which variable(s) is/are causing problems. (per my
'history lesson', above)
There are a variety of Python-compatible debuggers. One may suitably
cover your need. (https://wiki.python.org/moin/PythonDebuggingTools)
In other threads I've enthused about the learning tools employed in the
new-ish U.Mich/Coursera Py3 course. One of those tools, which your
colleague might find helpful, is Philip Guo's Python Tutor
(http://www.pythontutor.com/).
This tool also allows one to step-through Python code (or run to 'the
end'), and right beside its 'terminal window', dynamically maintains a
diagrammatic view of current-values and where they are kept in storage
(making use of the "frames" within Python's 'innards') - so, also handy
for noting separations of "scope"...
Trivial example:
http://www.pythontutor.com/visualize.html#code=a%20%3D%201%0Ab%20%3D%202%0Ac%20%3D%20a%20%2B%20b%0Aprint%28%20f'%7Ba%7D%20%2B%20%7Bb%7D%20%3D%20%7Bc%7D'%20%29%0A&cumulative=false&curInstr=4&heapPrimitives=nevernest&mode=display&origin=opt-frontend.js&py=3&rawInputLstJSON=%5B%5D&textReferences=false
[NB I'm not sure how long this link will live]
Ahah! Showing the global frame/list of variables and their values,
immediately highlights the situation where an "h" shows-up when we think
we're using "g".
OTOH it's a tutorial tool - so its use may be more trouble than it is
worth in the professional environment. So, returning to my (personal)
comment about PDB. (which was not meant to be at all derisive - every
tool has its place) My experience (again, personal - if I may), is that
once 'the guys' tuned me in to TDD, I found that because we were writing
(and testing) smaller units of code at one time (for later
assembly/integration into larger units), 'silly mistakes', eg my making
a typo, became evident much 'earlier' - and when the
debugging/tracing/testing was so much easier! That said, I can
immediately see why a 10~20 line function is unlikely to require my
pulling-out a "big gun" such as PDB - and if it was particularly
tricky/causing me frustration, such would be easy-enough to drop into
the PythonTutor tool!
[others may counsel differently - in which case, I'm ready to (re-)learn...]
--
Regards =dn
More information about the Python-list
mailing list