Decorador genérico vs Decorador de decoradores genéricos [cerrado] -- python campo con beginner campo con python-2.x campo con functional-programming camp codereview Relacionados El problema

Generic decorator VS generic decorators' decorator [closed]


2
vote

problema

Español
cerrado. Esta pregunta es off-topic . Actualmente no está aceptando respuestas.

¿Quieres mejorar esta pregunta? Actualizar la pregunta por lo que es on-topic para el intercambio de pila de revisión de código.

cerrado hace 2 años .

Mejorar esta pregunta

Aquí está mi pequeño fragmento:

  def genericDecorator(*decoArgs, **decoKwargs):     """Accept arbitrary arguments, and use them to decorate functions.     """     def decoWrapper(func):         def funcWrapper(*funcArgs, **funcKwargs):             # You can do anything else you want here              print decoArgs, decoKwargs             func(*funcArgs, **funcKwargs)         return funcWrapper     return decoWrapper  # Example: @genericDecorator(42, 404, whatever = 1024) def decoratedFunc(a, b, c, isAwesome = True):     print a, b, c, isAwesome  decoratedFunc(1, 2, 3)   

Salida:

  (42, 404) {'whatever': 1024} 1 2 3 True   

El "genérico" en el título y el nombre de la variable básicamente significa dos cosas:

  • puede aceptar un número arbitrario de argumentos.
  • La función que decora puede aceptar un número arbitrario de argumentos.

alguna información de fondo:

Acabo de aprender qué "Decoradores" son de esta publicación hoy. Sin embargo, el autor publicó un fragmento de bonificación "para hacer que cualquier decorador acepte genéricamente cualquier argumento", que define a un decorador de decoradores. (Búsqueda de "Práctica": decorando un decorador "en esa página, y puedes encontrar el fragmento Quiero decir.)

Decorador de decoradores de los decoradores hace que las cosas se compliquen innecesariamente, porque "piso es mejor que anidado". Así que escribo mi propio fragmento, y quiero saber si mi enfoque es mejor que el de ese autor. Si no, ¿por qué?

Gracias por revisar.

Original en ingles

Here is my little snippet:

def genericDecorator(*decoArgs, **decoKwargs):     """Accept arbitrary arguments, and use them to decorate functions.     """     def decoWrapper(func):         def funcWrapper(*funcArgs, **funcKwargs):             # You can do anything else you want here              print decoArgs, decoKwargs             func(*funcArgs, **funcKwargs)         return funcWrapper     return decoWrapper  # Example: @genericDecorator(42, 404, whatever = 1024) def decoratedFunc(a, b, c, isAwesome = True):     print a, b, c, isAwesome  decoratedFunc(1, 2, 3) 

Output:

(42, 404) {'whatever': 1024} 1 2 3 True 

The "generic" in the title and the variable name basically means two things:

  • It can accept an arbitrary number of arguments.
  • The function it decorates can accept an arbitrary number of arguments.

Some background information:

I've just learned what "decorators" are from this post today. However, the author posted a bonus snippet "to make any decorator accept generically any argument", which defines a decorators' decorator.(Search for "Letxe2x80x99s practice: decorating a decorator" on that page, and you can find the snippet I mean.)

IMHO a decorators' decorator makes things unnecessarily complicated, because "Flat is better than nested". So I write my own snippet, and I want to know whether my approach is better than that author's. If not, why?

Thank you for reviewing.

           
   
   

Lista de respuestas


Relacionados problema

18  Reemplazo de clases de Python con módulos [cerrados]  ( Replacing python classes with modules ) 
cerrado. Esta pregunta es off-topic . Actualmente no está aceptando respuestas. ¿Quieres ...

2  HackerRank: Rotación de la matriz izquierda en Python  ( Hackerrank left array rotation in python ) 
Aquí está el problema en Hackerrank . Quiero saber cómo puedo mejorar este código. Estoy tratando principalmente de mejorar las siguientes habilidades: la do...

3  ¿Quick-Sort una lista vinculada?  ( Quick sort a linked list ) 
Tengo un pequeño proyecto donde estoy implementando una lista de enlaces inmutables (no solo ...) basada en una estructura de pares como la celda de los contr...

25  Proyecto EULER PROBLEMA 2 EN COTJURE  ( Project euler problem 2 in clojure ) 
Estoy en el proceso de aprendizaje de Clojure. Soy bastante nuevo en la programación funcional y me gustaría saber si mi código huele o si hay alguna implicac...

4  Simple Haskell Key Value File Store  ( Simple haskell key value file store ) 
Como ejercicio en el aprendizaje de Haskell, implementé una tienda de valores clave simple, donde puede poner y obtener valores (como ByteString s). (Para r...

13  Muestreo de reservorio en Clojure  ( Reservoir sampling in clojure ) 
Estoy aprendiendo a Clojure y decidí comenzar por intentar escribir una solución a un algoritmo bastante simple, un muestreo de reservorio. Como dije, estoy a...

3  Definiendo la transposición en una colección de colecciones irregulares  ( Defining transpose on a collection of irregular collections ) 
Me pidieron que presentara mi solicitud de revisión de código en https: //stackoverflow.com/questions/10672046/defining-transpose-on-a-collection-of-irregula...

1  Implementación ingenua de la memorización automática  ( Naive implementation of automatic memoisation ) 
Escribí el código a (ingenuamente) realizar la memorización automática. Intenté escribirlo en un estilo de programación funcional, y así no hizo uso de ningun...

9  Eliminación de árbol negro rojo en F #  ( Deleting from red black tree in f ) 
Sí, estoy muy lentamente a través de las estructuras de datos puramente funcionales. Así que pasé por la sección sobre árboles negros rojos. Lo que presenta e...

10  Obteniendo la última fecha donde ocurrió un día de la semana dado  ( Getting the last date where a given week day occurred ) 
Estoy tratando de aprender un poco sobre la programación funcional y como mi herramienta, elegí F # ya que soy un desarrollador de .NET y el medio ambiente es...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos