"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

Reply via email to