[Python] Problema di scope, o bug?
Andrea Gasparini
gaspa a yattaweb.it
Sab 30 Ago 2008 22:58:02 CEST
Ciao!
Qualcuno mi spiega come e' possibile che questo script:
1 #!/usr/bin/python
2 import sys
3 import getopt
4
5 quiet = False
6
7 def main():
8 print quiet
9 optlist, args = getopt.getopt(sys.argv[1:], 'q', ['--quiet'])
10
11 for o,a in optlist:
12 if o in ('-q','--quiet'):
13 quiet=True
14
15 if __name__ == "__main__":
16 main()
Mi dia questo errore:
$ python scope.py
Traceback (most recent call last):
File "scope.py", line 16, in <module>
main()
File "scope.py", line 8, in main
print quiet
UnboundLocalError: local variable 'quiet' referenced before assignment
????
quiet e' dichiarato come variabile del modulo, e quindi python dovrebbe
andarsi a cercare anche quel valore... ma la cosa piu' strana e' che
togliento il "for o,a in optlist:" tutto funziona alla perfezione:
1 #!/usr/bin/python
2 import sys
3 import getopt
4
5 quiet = False
6
7 def main():
8 print quiet
9 optlist, args = getopt.getopt(sys.argv[1:], 'q', ['--quiet'])
10
11 if __name__ == "__main__":
12 main()
$ python scope.py
False
Non posso neanche pensare che il for faccia cose strane, visto che neanche
ci arriva... allora potrei pensare a namespace pollution... ma al limite
dovrebbe cambiare valore a qualcosa, non darmi Unbound.
Insomma, qualche idea??
( a parte "ma non hai altro da fare il sabato sera?" :D )
bye!
--
-gaspa-
-----------------------------------------------
--------- http://launchpad.net/~gaspa ---------
------ HomePage: iogaspa.altervista.org -------
-Il lunedi'dell'arrampicatore: www.lunedi.org -
Maggiori informazioni sulla lista
Python