Dear Ian Cordasco,

 
So as a maintainer/contributor to three of those I agree. But they're
external dependencies which I sense is something you don't want.

The reality is that you can compile this code with some standard
library modules and they'll give you the feedback you want. If you
were to run this code you'd get a NameErrors for the first line where
you expect a warning and you would get a SyntaxError for the second
else statement after the first. pyflakes and flake8 turn those into
error codes for you. So really, python already comes with the warnings
on because doing

$ python test.py

Would first result in a SyntaxError (because of your else following
the first else) and then once that's been fixed, you'd get a
NameError.

Disclaimer: I didn't actually run the code so I may have the order of
errors wrong, but I think this is roughly correct.

I am sorry..I mean:

#!/usr/bin/python

word = raw_input("Enter line : ")

if word == "hello":
  print ("You enter \'hello\'")
else:
  if world == "buy": #Error! should be word not world
    print "Buy"
  else:
    dasdas

We will not have a problem with else.

Okay, we can split this example:

The first part is:

#!/usr/bin/python

word = raw_input("Enter line : ")

if word == "hello":
  print ("You enter \'hello\'")
else:
  if world == "buy": #Error! should be word not world
    print "Buy"

"NameError: name 'world' is not defined" - only in case if the word != 'hello'!!

The second one:

#!/usr/bin/python

word = raw_input("Enter line : ")

if word == "hello":
  print ("You enter \'hello\'")
else:
  if word == "buy": #Now correct!
    print "Buy"
  else
    iamnotfunction #Error

"NameError: name 'iamnotfunction' is not defined" only in case if word != 'hello' and word != "buy"!!

So I can type whatever I want in else block and someone can detect it after the several years..

And the first thing that I have to do programming in Python is to download analyser tool..I understand the importance of static analyser tools, but in this case (to check simple things like a variables and functions names) it is like "To use a sledge-hammer to crack a nut.".


Many thanks!

- Eduard

PS. Within C++ or other languages I should use static analyser tools to check real bug-prone situation, but in new, modern Python I should use third-party tools to check the real simple errata.

Maybe I do not understand something..