Funciones locales de Python

Las funciones vistas anteriormente están todas definidas en el alcance global, son todas funciones globales. Python también admite funciones fijas en el cuerpo de la función, que se definen como funciones locales.

De manera predeterminada, las funciones locales están ocultas del mundo exterior. Las funciones locales solo son válidas dentro de sus funciones de cierre. Las funciones de cierre también pueden devolver funciones locales para que el programa use funciones locales en otros ámbitos.

>>> def ca (tipo, nn):
     def cuadrado (n):
         devuelve n * n
     def cube (n):
         devuelve n * n * n
     def fac (n): 
        resultado = 1
         para i en el rango (2, n 1 ): 
            resultado * = i
         regrese resultado
     si el tipo == ' plaza ' :
         retorno cuadrado (nn)
     elif tipo == ' cubo ' :
         el retornocubo (nn)
     más : 
        devuelve fac (nn)

        
 >>> ca ( ' cuadrado ' , 3 )
 9 
>>> ca ( ' cubo ' , 3 )
 27

  >>> ca ('', 3)
  6
  >>> ca ('', 4)
  24
  >>> ca ('3', 3)
  6

Las variables en una función local también oscurecerán las variables locales en la función en la que se encuentra:
>>> def foo (): 
    name = ' bob ' 
    def bar ():
         print (name) 
        name = ' jeff ' 
    bar ()

 >>> foo () 
Traceback (última llamada): 
  Archivo " <pyshell # 174 > " , línea 1, en <module> 
    foo () 
  Archivo " <pyshell # 173> " , línea 6, en foo 
    bar () 
  Archivo " <pyshell # 173> " , línea 4,en el bar
    print (nombre) 
UnboundLocalError: variable local ' nombre ' referenciado antes de la asignación
Ver código

Python proporciona la palabra clave no local, a través de la declaración no local, puede declarar que la declaración de asignación de acceso solo accede a las variables locales de la función donde se encuentra la función.

>>> def foo (): 
    nombre = ' bob ' 
    def bar (): 
        nombre no local 
        print (name) 
        name = ' jeff ' 
    bar ()

    
 >>> foo () 
bob
Ver código

Las funciones no locales y globales son más o menos similares, la diferencia es que global se usa para declarar variables globales, y no local se usa para declarar variables locales de la función donde la función actual

 

Supongo que te gusta

Origin www.cnblogs.com/inuyashalove/p/12752023.html
Recomendado
Clasificación