pyplot python python-3.x

pyplot - Cambios en la instrucción de importación python3



title plt python (3)

La importación relativa ocurre cada vez que está importando un paquete relativo al script / paquete actual.

Considere el siguiente árbol por ejemplo:

mypkg ├── base.py └── derived.py

Ahora, su derived.py requiere algo de base.py En Python 2, puedes hacerlo así (en derived.py ):

from base import BaseThing

Python 3 ya no es compatible ya que no está explícito si desea la base ''relativa'' o ''absoluta''. En otras palabras, si había un paquete de Python llamado base instalado en el sistema, obtendría el incorrecto.

En su lugar, requiere que utilice importaciones explícitas que especifican explícitamente la ubicación de un módulo en una ruta similar. Su derived.py se vería así:

from .base import BaseThing

El líder . dice ''import base from module directory''; en otras palabras, .base asigna a ./base.py .

Del mismo modo, hay un prefijo .. que sube en la jerarquía de directorios como ../ (con el mapeo de ../mod.py a ../mod.py ), y luego ... que sube dos niveles ( ../../mod.py ) y así sucesivamente.

Sin embargo, tenga en cuenta que las rutas relativas enumeradas anteriormente son relativas al directorio donde reside el módulo actual ( derived.py ), no el directorio de trabajo actual.

@BrenBarn ya explicó el caso de la importación de estrellas. Para completar, tendré que decir lo mismo;).

Por ejemplo, necesita usar algunas funciones math pero las usa solo en una función. En Python 2, se te permitió ser semi-perezoso:

def sin_degrees(x): from math import * return sin(degrees(x))

Tenga en cuenta que ya activa una advertencia en Python 2:

a.py:1: SyntaxWarning: import * only allowed at module level def sin_degrees(x):

En el código moderno de Python 2 debes y en Python 3 debes hacer lo siguiente:

def sin_degrees(x): from math import sin, degrees return sin(degrees(x))

o:

from math import * def sin_degrees(x): return sin(degrees(x))

No entiendo lo siguiente de pep-0404

En Python 3, las importaciones relativas implícitas dentro de los paquetes ya no están disponibles, solo se admiten las importaciones absolutas y las importaciones relativas explícitas. Además, las importaciones en estrella (por ejemplo, de x import *) solo se permiten en el código de nivel de módulo.

¿Qué es una importación relativa? ¿En qué otros lugares se permitió la importación de estrellas en python2? Por favor explique con ejemplos.


Para admitir Python 2 y Python 3, utilice importaciones relativas explícitas como se muestra a continuación. Son relativos al módulo actual. Han sido compatibles a partir de 2.5 .

from .sister import foo import .brother from ..aunt import bar import ..uncle


Para importaciones relativas, vea la documentación . Una importación relativa es cuando importa desde un módulo relativo a la ubicación de ese módulo, en lugar de hacerlo desde sys.path .

En cuanto a la import * , Python 2 permitió importar estrellas dentro de las funciones, por ejemplo:

>>> def f(): ... from math import * ... print sqrt

Se emite una advertencia para esto en Python 2 (al menos versiones recientes). En Python 3 ya no está permitido y solo puedes hacer importaciones de estrellas en el nivel superior de un módulo (no dentro de funciones o clases).