Articles of python internals

¿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 […]

El objeto de fracción no tiene __int__ pero int (Fracción (…)) aún funciona

En Python, cuando tienes un objeto, puedes convertirlo en un entero usando la función int . Por ejemplo, int(1.3) devolverá 1 . Esto funciona internamente utilizando el método mágico __int__ del objeto, en este caso particular float.__int__ . En Python Fraction se pueden usar objetos para construir fracciones exactas. from fractions import Fraction x = […]

Python intercambiando listas

En python, cuando asigno una lista a otra, como: a = [1,2,3] b = a Ahora b y un punto a la misma lista. Ahora considerando dos listas, a = [1,2,3] b = [4,5,6] a,b = b,a Ahora, ¿cómo es que se intercambian como cualquier otro tipo de datos y no acaban apuntando a la […]

¿Las listas de comprensión son sintácticas de azúcar para `list (expresión del generador)` en Python 3?

En Python 3, ¿una comprensión de lista es simplemente azúcar sintáctica para una expresión generadora incorporada a la función de list ? Por ejemplo, es el siguiente código: squares = [x**2 for x in range(1000)] en realidad convertido en el fondo en el siguiente? squares = list(x**2 for x in range(1000)) Sé que la salida […]

¿Por qué la clase de estilo nuevo y la clase de estilo antiguo tienen un comportamiento diferente en este caso?

Encontré algo interesante, aquí hay un fragmento de código: class A(object): def __init__(self): print “A init” def __del__(self): print “A del” class B(object): a = A() Si ejecuto este código, obtendré: A init Pero si cambio la class B(object) a la class B() , obtendré: A init A del Encontré una nota en el __del__ […]

¿Qué módulos de biblioteca estándar se requieren para ejecutar el intérprete de Python 3.5?

Aquí hay un progtwig CPython que intenta inicializar el intérprete con un sys.path vacío: #include int main(int argc, char** argv) { wchar_t* program = NULL; wchar_t* sys_path = NULL; Py_NoSiteFlag = 1; program = Py_DecodeLocale(argv[0], NULL); Py_SetProgramName(program); sys_path = Py_DecodeLocale(“”, NULL); Py_SetPath(sys_path); Py_Initialize(); PyMem_RawFree(program); PyMem_RawFree(sys_path); Py_Finalize(); } La ejecución del progtwig anterior genera el siguiente […]

Usando una función definida en una cadena ejecutada en Python 3

¿Por qué el siguiente código de python3 produce un error? a=”’ def x(): print(42) ”’ class Test: def __init__(self): exec(a) x() t = Test() Resultados en este mensaje: Traceback (most recent call last): File “bug.py”, line 11, in t = Test() File “bug.py”, line 9, in __init__ x() NameError: global name ‘x’ is not defined

¿Cómo obtener el recuento de referencia de un PyObject?

¿Cómo obtener el recuento de referencia de un PyObject desde C ++? Hay funciones Py_INCREF y Py_DECREF que lo aumentan / disminuyen, pero no he encontrado ninguna función que devuelva el recuento de referencias del objeto. Lo necesito para fines de depuración.

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 […]

Python es el comportamiento del operador con una cadena

No puedo entender el siguiente comportamiento. Estoy creando 2 cadenas, y estoy usando el operador para compararlo. En el primer caso, está funcionando de manera diferente. En el segundo caso, funciona como se esperaba. ¿Cuál es la razón cuando uso una coma o un espacio, muestra False al compararlo con, y cuando no se usa […]