Cómo agregar funciones incorporadas

Soy nuevo en la progtwigción de Python. ¿Cómo puedo agregar nuevas funciones incorporadas y palabras clave al intérprete de Python utilizando C o C ++?

En resumen, es técnicamente posible agregar cosas a los construidos de Python , pero casi nunca es necesario (y en general se considera una muy mala idea).

En más tiempo, obviamente es posible modificar la fuente de Python y agregar nuevos elementos incorporados, palabras clave, etc. Pero el proceso para hacerlo está un poco fuera del scope de la pregunta tal como está.

Si desea más detalles sobre cómo modificar la fuente de Python, cómo escribir funciones de C a las que se puede llamar desde Python u otra cosa, edite la pregunta para que sea más específica.

Si eres nuevo en la progtwigción de Python y sientes que deberías estar modificando el lenguaje central en tu trabajo diario, eso es probablemente un indicador que simplemente deberías estar aprendiendo más sobre él. Python se usa, sin modificaciones, para una gran cantidad de dominios de problemas diferentes (por ejemplo, numpy es una extensión que facilita la computación científica y Blender lo usa para la animación 3D), por lo que es probable que el lenguaje pueda manejar su dominio de problemas también.

†: puede modificar el módulo __builtin__ para “agregar nuevos elementos incorporados” … Pero es casi seguro que es una mala idea: cualquier código que dependa de él será muy difícil (y confuso) de usar en cualquier lugar fuera del contexto de su aplicación original. Considere, por ejemplo, si agrega un ” greater_than_zerogreater_than_zero , luego lo utiliza en otro lugar:

 $ cat foo.py import __builtin__ __builtin__.greater_than_zero = lambda x: x > 0 def foo(x): if greater_than_zero(x): return "greater" return "smaller" 

Cualquiera que intente leer ese código se confundirá porque no sabrá dónde se define greater_than_zero , y cualquiera que intente usar ese código desde una aplicación que no se greater_than_zero __builtin__ greater_than_zero en __builtin__ no podrá usarlo.

Un método mejor es usar la statement de import existente de Python: http://docs.python.org/tutorial/modules.html