Python- Variable Scope

def Interface(): Number = input("Enter number: ") Interface() print(Number) 

Este es un pequeño fragmento simplificado de mi código que produce:

 Rastreo (llamadas recientes más última):
   Archivo "C: /Users/Jack/Documents/Python/NumberToText.py", línea 78, en 
     imprimir (número)
 NameError: nombre 'Número' no está definido

Debo entender que la variable está definida en una función.

¿Qué puedo hacer para arreglar esto?

Depende de lo que quieras hacer.

Probablemente hacer que la función de Interface devuelva el Number sería la solución más fácil

 def interface(): number = input("Enter number: ") return number print(interface()) 

Consulte este SO QA sobre el tema de las reglas de scope en python

Nota: como puede ver, he convertido los nombres de la función y la variable en minúsculas, siguiendo las pautas de PEP-8

Porque el Number variable solo pertenece a la función Interface() . Puedes usar el return esta manera:

 def Interface(): number = int(input("Enter number: ")) # remember use int() function if you wish user enter a number return(number) print(Interface()) 

o use global esta manera:

 def Interface(): global number number = input("Enter number: ") # remember use int() function if you wish user enter a number Interface() print(number) 

Y solo use global cuando necesite que la variable puede usar en cualquier lugar o necesita que la función devuelva otras cosas. Porque la modificación de los globales romperá la modularidad.

Aquí está el documento sobre lo que es variable global.