Can global variable be passed into Python function?

Ben Finney ben+python at benfinney.id.au
Sat Mar 1 17:30:20 EST 2014


Marko Rauhamaa <marko at pacujo.net> writes:

> Steven D'Aprano <steve+comp.lang.python at pearwood.info>:
>
> > It seems to me that he's just assuming that symbols ought to be
> > singletons, hence his focus on identity rather than equality.
>
> Yes.

Give that up, then. Your assumption is false in Python, and is not
needed to get the behaviour you say you need.

> A practical angle is this: if I used strings as symbols and compared
> them with "==", logically I shouldn't define them as constants but
> simply use strings everywhere

Yes, that works fine. It's also quite understandable for the reader.

> The principal (practical) problem with that is that I might make a
> typo and write:
>
>            if self.state == "IDLE ":
>
> which could result in some hard-to-find problems.

That's just one of a huge variety of problems. Write a comprehensive
unit test suite to catch this and a great many other errors.

> That's why I want get the help of the Python compiler and always refer
> to the states through symbolic constants

Python doesn't let you compare symbols, only values. Work within its
constraints.

-- 
 \     “I cannot conceive that anybody will require multiplications at |
  `\   the rate of 40,000 or even 4,000 per hour …” —F. H. Wales, 1936 |
_o__)                                                                  |
Ben Finney




More information about the Python-list mailing list