TransWikia.com

Diferencia entre exec() y exec_()

Stack Overflow en español Asked by XHighVoltageX on November 10, 2021

En Python cual diferencia entre exec() y exec_()?

tienen alguna relación o no tiene que ver una con la otra?

Gracias.

One Answer

Python tiene un conjunto de palabras reservadas que no se pueden emplear para nombrar variables o funciones como son if, return o def, por ejemplo. Además de estas palabras, se recomienda no usar los nombres de las funciones predefinidas (built-in functions) como max, int, iter o exec. No está prohibido, pero si usas el nombre para tu variable la función predefinida queda inaccesible. A la hora de pasar chequeadores de código (linters) te advertirán de este problema y pedirán que lo cambies.

En realidad no es del todo cierto que las funciones predefinidas queden inaccesibles. Todas pertenecen al módulo builtins, con lo que siempre puedes acceder a ellas calificando el nombre con el nombre del módulo. Por ejemplo, builtins.exec para acceder a la función exec. Pero es mejor no usar este módulo en nuestro código, podría tener problemas en alguna implementación del intérprete python que optimize estas funciones.

Por otro lado, puedes aislar efectos indeseados manteniendo separados los espacios de nombres (namespaces). Nunca hacer un import * from module, ya que se pueden enmascarar las funciones predefinidas por las del módulo. Es mejor hacer un import module y calificar cada una de las funciones como module.function().

Por convenio, para evitar problemas con las palabras reservadas y funciones predefinidas, se suele añadir un '_' al final del nombre de las funciones. Lo verás bastante como nombre de argumento para pasar una clase, que se nombra como class_, aunque hay quien prefiere usar cls o klass, según gustos. Lo mismo para el caso que nos ocupa, que nombra al método exec_ para que no haya problemas con la función predefinida exec. Es un convenio, sin ninguna motivación más que evitar un posible conflicto con otras funciones con el mismo nombre.

Answered by ChemaCortes on November 10, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP