¿Cómo funciona IPython’s? operador realmente funciona?

Así que pensé que para implementar una función de este tipo en una aplicación de consola, al agregar un signo de interrogación al final del nombre de una función se dertwigrá su cadena de documentación, probablemente habría utilizado una función como metaclases, donde, por definición / Importar, duplicaría todos los nombres de los miembros del módulo y produciría nuevos solo para escribir cadenas de documentos.

Entonces me di cuenta de que no necesitas paréntesis reales para llamar a las funciones auxiliares y python en realidad no te permite poner un signo de interrogación al final del nombre de la función … Así que esto se hace en python. solo perdiendo el tiempo tratando de resolver esto?

Gracias por adelantado

No está hecho de la manera que estás imaginando. ipython lee la entrada de la línea de comandos como una línea de texto, por lo que tiene la oportunidad de verificar si termina con un signo de interrogación antes de pasarla a eval (o lo que sea). Si lo hace, ejecuta la help(name) lugar de lo que escribiste.

AST luce un poco pesado, pero puede obtener una idea de cómo funciona esto al revisar el code módulo. Le proporciona un intérprete ligero que puede ampliar con la syntax de este tipo si lo desea.

ipython utiliza AST , puede personalizar el análisis de syntax y crear una nueva bifurcación de ipython.

puede ayudar

Eche un vistazo al módulo IPython.core.inputsplitter para el código que analiza la línea de entrada sin procesar para cosas como?,!, /,%, Etc.