"EP" <[EMAIL PROTECTED]> said: >> ------------Original Message------------ >> From: [EMAIL PROTECTED] (Alexander Zatvornitskiy) > >> >> Hello All! >> >> I'am novice in python, and I find one very bad thing (from my point of >> view) in >> language. There is no keyword or syntax to declare variable, like 'var' >> in >> Pascal, or special syntax in C. It can cause very ugly errors,like >> this: >> >> epsilon=0 >> S=0 >> while epsilon<10: >> S=S+epsilon >> epselon=epsilon+1 >> print S >> >> It will print zero, and it is not easy to find such a bug! > > >Hmmm. I am surely an expert in writing buggy code, but I can not say I make >this error in Python. Why is that? > >I'm not sure, but a couple things that may help me miss making this mistake in >practice may be (somewhat informal in my case) unit testing - I test for >correct results for at least a few cases. > >It may also help that with Python I can code at a somewhat higher conceptual >level, or maybe it is just the syntax that helps avoid these problems: > >>>> for epsilon in range (0,10): > S=S+epsilon > >>>> for epsilon in range (0,10): > S=S+epselon > >Traceback (most recent call last): > File "<pyshell#6>", line 2, in ? > S=S+epselon >NameError: name 'epselon' is not defined > > >It may seem like jumping off a cliff, but the improvement in readability (the >variable declarations being visual clutter) makes it much easier for me to see >my code, and any typos in it. > >It seems it would be simple enough to have one's code, or another script, >automatically print out a sorted list of the variables - which would make the >error you note obvious. But I haven't needed this, yet at least. > >You might like Python and find the lack of variable declaration checking not a >problem. It's worth a shot. > > class MyVars(object): __slots__ = ['epsilon', 'thud', 'foo']
mv = MyVars() mv.epselon = 42 Traceback (most recent call last) /home/dw/KirbyBase-1.7/<console> AttributeError: 'MyVars' object has no attribute 'epselon' mv.epsilon = 42
-- http://mail.python.org/mailman/listinfo/python-list