python - print - ¿Cómo hacer que una variable dentro de un bloque try/except sea pública?
try except python example (3)
Como se respondió antes, no se ha introducido un nuevo ámbito mediante el uso de la cláusula de try except
, por lo que si no se produce una excepción, debería ver su variable en la lista de locals
y debería estar accesible en el ámbito actual (en su caso, global).
print(locals())
En el alcance del módulo (su caso) locals() == globals()
¿Cómo puedo hacer que una variable dentro del bloque try / except sea pública?
import urllib.request
try:
url = "http://www.google.com"
page = urllib.request.urlopen(url)
text = page.read().decode(''utf8'')
except (ValueError, RuntimeError, TypeError, NameError):
print("Unable to process your request dude!!")
print(text)
Este código devuelve un error NameError: name ''text'' is not defined
.
¿Cómo puedo hacer que el texto variable esté disponible fuera del bloque try / except?
Solo declare el text
variable fuera de try
except
bloque,
import urllib.request
text =None
try:
url = "http://www.google.com"
page = urllib.request.urlopen(url)
text = page.read().decode(''utf8'')
except (ValueError, RuntimeError, TypeError, NameError):
print("Unable to process your request dude!!")
if text is not None:
print(text)
try
declaraciones de try
no crean un nuevo ámbito, pero el text
no se establecerá si la llamada a url lib.request.urlopen
genera la excepción. Es probable que desee la línea de print(text)
en una cláusula else
, de modo que solo se ejecute cuando no hay excepción.
try:
url = "http://www.google.com"
page = urllib.request.urlopen(url)
text = page.read().decode(''utf8'')
except (ValueError, RuntimeError, TypeError, NameError):
print("Unable to process your request dude!!")
else:
print(text)
Si se necesita usar el texto más adelante, realmente debe pensar cuál es su valor si la asignación a la page
falla y no puede llamar a page.read()
. Puede darle un valor inicial antes de la declaración de try
:
text = ''something''
try:
url = "http://www.google.com"
page = urllib.request.urlopen(url)
text = page.read().decode(''utf8'')
except (ValueError, RuntimeError, TypeError, NameError):
print("Unable to process your request dude!!")
print(text)
o en la cláusula else
:
try:
url = "http://www.google.com"
page = urllib.request.urlopen(url)
text = page.read().decode(''utf8'')
except (ValueError, RuntimeError, TypeError, NameError):
print("Unable to process your request dude!!")
else:
text = ''something''
print(text)