Irv Kalb wrote, on Sunday, January 29, 2017 9:04 PM
>
> I teach intro to programming using Python. In my first
> assignment, students are asked to assign variables of
> different types and print out the values.
>
> One student (who really did not understand Booleans) turned
> in the following for his/her interpretation of Booleans (Python 2.7):
>
> True = 'shadow'
> False = 'light'
> print "If the sun is behind a cloud, there is", True
> print "If it is a clear day, there is", False
>
> And it printed:
>
> If the sun is behind a cloud, there is shadow
> If it is a clear day, there is light
>
>
> It seems very odd that Python allows you to override the
> values of True and False. In the code, True and False were
> clearly recognized as keywords as they were colored purple.
> But there was no error message.
>
> You cannot assign new values to other keywords. Simple tests
> of things like:
>
> for = 5
>
> while = 2
>
> not = 3
>
> As expected, all result in SyntaxError: invalid syntax. Why
> would Python allow you to override the values of True and
> False? I wonder if this is some sort of historical thing as
> these are the only keywords besides None that are uppercased.
> This line:
>
> None = 5
>
> Even gives a special SyntaxError: cannot assign to None
>
> Just curious,
>
> Irv
Just guessing, but in the examples you give in Python 2.7, substitute
strings are syntactically correct in print statements, but:
5 in list('abc'):
2 True:
if a 3 b:
would all be syntactical errors.
As is 'None = 5'.
Looks like the moral of the story is that in Python 2.7 you can redefine
keywords, so long as you don't get any syntax errors after (or during)
redefinition.
--
https://mail.python.org/mailman/listinfo/python-list