Articles of cpython

¿Debe importlib.reload restaurar un atributo eliminado en Python 3.6?

Estoy estudiando estas dos preguntas relacionadas: aquí y aquí . Estoy viendo un comportamiento que no espero en Python 3.6, que difiere del comportamiento usando la reload simple en Python 2.7 (y 3.4). Es decir, parece que un atributo de módulo que se completaría durante la inicialización del módulo o al volver a ejecutar el […]

CPython de Java?

Necesito llamar al código CPython desde Java. ¿Qué herramientas / API / bibliotecas existen para ayudarme a hacer esto? Jython no es una opción ya que el código de Python depende en gran medida del numpy . edición 1: la función main() debe ser Java, no Python (es decir, necesito incrustar CPython en Java, no […]

¿Por qué y dónde python internó cadenas al ejecutar `a = ‘python’ ‘mientras el código fuente no lo muestra?

Estoy tratando de aprender el mecanismo interno de python usando en la implementación del objeto string. Pero tanto en PyObject *PyString_FromString(const char *str) como en PyObject *PyString_FromStringAndSize(const char *str, Py_ssize_t size) cadenas internadas de python solo cuando su tamaño es 0 o 1. PyObject * PyString_FromString(const char *str) { fprintf(stdout, “creating %s\n”, str);————[1] //… //creating… […]

Rendimiento de coincidencia de cadenas: gcc versus CPython

Mientras investigaba las compensaciones de rendimiento entre Python y C ++, he ideado un pequeño ejemplo, que se centra principalmente en una concordancia de subcadenas tontas. Aquí está el C ++ relevante: using std::string; std::vector matches; std::copy_if(patterns.cbegin(), patterns.cend(), back_inserter(matches), [&fileContents] (const string &pattern) { return fileContents.find(pattern) != string::npos; } ); Lo anterior está construido con […]

RuntimeError: sys.stdout perdido

Estaba intentando depurar un problema con abc.ABCMeta , en particular una verificación de subclases que no funcionó como se esperaba y quería comenzar simplemente agregando una print al método __subclasscheck__ (Sé que hay mejores formas de depurar el código, pero pretender por el bien de esta pregunta que no hay alternativa). Sin embargo, al iniciar […]

¿Qué es el protocolo de secuencia de Python?

Python hace mucho con métodos mágicos y la mayoría de estos son parte de algún protocolo. Estoy familiarizado con el “protocolo iterador” y el “protocolo numérico”, pero recientemente tropecé con el término “protocolo de secuencia” . Pero incluso después de algunas investigaciones no estoy exactamente seguro de cuál es el “protocolo de secuencia”. Por ejemplo, […]

¿Por qué no puedo acceder a las incorporaciones si utilizo un dictado personalizado como funciones globales?

Tengo una subclase de dict como esta: class MyDict(dict): def __getitem__(self, name): return globals()[name] Esta clase se puede usar con eval y exec sin problemas: >>> eval(‘bytearray’, MyDict()) >>> exec(‘print(bytearray)’, MyDict()) Pero si hago una instancia de un objeto de función con el constructor types.FunctionType , la función no puede acceder a ningún componente incorporado: […]

deque.popleft () y list.pop (0). ¿Hay diferencia de rendimiento?

deque.popleft() y list.pop(0) parecen devolver el mismo resultado. ¿Hay alguna diferencia de rendimiento entre ellos y por qué?

¿Puede recuperarse de la reasignación de __builtins__ en python?

Si abro el modo interactivo y escribo: __builtins__ = 0 # breaks everything ¿He roto completamente la sesión? Si es así, ¿qué sucede detrás de escena para asignar __builtins__ al módulo integrado que el intérprete no puede manejar? Si no, ¿cómo puedo recuperarme de esto? Solo algunos de mis propios bashs de arreglarlo: Cualquier bash […]

Ofuscando el código de bytes de Python a través de la mutación del intérprete

En realidad, Dropbox lo hizo muy bien, fueron capaces de asegurar su aplicación de escritorio hecha en Python; Investigué mucho esto, pero no hay una mejor solución mejor que la ofuscación, que no es una forma segura de hacerlo, y terminarás viendo tu código cargado en algún lugar. Escuché una sesión hecha por Giovanni Bajo […]