Forum
>>
Programmazione Python
>>
Scripting
>>
Scope delle variabili nel try-except
Pagina: 1
Esegui il login per scrivere una risposta.
Pagina: 1
Scritto da Bageyelet |
2018-01-10 12:03:49 - Scope delle variabili nel try-except
|
Stavo facendo degli esperimenti in Python 2.7 e mi sono imbattuto nel seguente errore; lanciando questo script
import sys import resource MEMORY_LIMIT = 1024 * 1024 * 1 # 1 MiB def memory_limit(): resource.setrlimit(resource.RLIMIT_AS, (MEMORY_LIMIT, MEMORY_LIMIT)) memory_limit() s = "" while 1: try: s += "a" except MemoryError: print len(s) sys.exit(0) ottengo un NameError alla riga print len(s). Il traceback completo è: Traceback (most recent call last): File "limit.py", line 16, in <module> print len(s) NameError: name 's' is not defined La stranezza risiede nel fatto che s è definita ed inizializzata nello scope globale. Cosa mi sfugge? Notare che il seguente script termina correttamente from random import randint import sys def foo(): if randint(0, 100) == 23: raise Exception else: return "a" s = "" while 1: try: s += foo() except: print len(s) sys.exit(0)Grazie in anticipo dell'aiuto |
|
Scritto da Daniele aka Palmux |
2018-01-10 21:22:08 - Re: Scope delle variabili nel try-except
|
Ciao caro, sono al volo e non posso provare il codice, ma sei sicuro che raggiungendo il limite di memoria che hai settato, non si svuoti la memoria stessa e quindi s di fatto non esista più? Prova a leggere sulla documentazione, potrebbe essere questo il problema, che poi problema non sarebbe.
Scusa se non sono preciso, ma non uso mai questo sistema per limitare il range di utilizzo di uno script. Cya |
Pagina: 1
Esegui il login per scrivere una risposta.