Can global variable be passed into Python function?

Chris Angelico rosuav at gmail.com
Fri Feb 28 06:51:28 EST 2014


On Fri, Feb 28, 2014 at 10:30 PM, Marko Rauhamaa <marko at pacujo.net> wrote:
> Chris Angelico <rosuav at gmail.com>:
>
>> String literals will often be interned if they look like (especially,
>> if they *are*) identifiers, so if you want to prevent other strings
>> from happening to match, you can't trust 'is'.
>>
>> [...]
>>
>> If you're using strings as state values, you should be using == to
>> compare them. Nothing else is safe.
>
> You didn't quite understand the use case. You would never ever do things
> like:
>
>> >>> a.state="<<INIT>>"
>
> You'd only refer to the state names symbolically:
>
>    a.state = a.INIT

In theory, yes. If that's all people will ever do, then you can safely
use == to check. Why are you using is? To prevent the case where some
other random string will happen to compare equal. So I stuffed some
other random string in, and it was equal, and I proved that I could
make it identical as well.

ChrisA



More information about the Python-list mailing list